2016-03-28 86 views
0

我正在從HTTP響應中讀取JSON數據,並且需要放入一些由JSONPath提取的數據。我想要的數據是好的,它在調試時顯示,但我無法將其插入到其他需要修改的JSON對象中。在JMeter中處理JSON響應

問題是我不知道如何將新元素插入到JSON數組中,無論我嘗試什麼,都會收到錯誤「字段XXX無法訪問」。我是JSON新手,希望得到一些建議。

JSON是一樣的東西:

{ 
    "background": null, 
    "childInfos": [ 

    ], 
    "claimScope": 2, 
    "customAttributeInfos": [ 

    ], 
    "dueDate": 1459461540000, 
    "instructions": null, 
    "name": "Client_1-23456", 
    "owners": [ 
    "4YESyxwCtA2YBncmM+tnEU5Ze6Fev8K3" 
    ], 
    "priority": 1, 
    "referenceFilesInfos": [  

    ] 

    ... 

    "batchInfos": [ 
    { 
     "name": "Batch1", 
     "targetFormat": "TXML", 
     "workflowTicket": "4YESyxwCtA3PqFg+3vJ6nE5Ze6Fev8K3", 
     "targetLanguageInfos": [ 
     { 
      "targetLanguageLocale": "de-DE", 
      "dueDate": 1459461540000, 
      "dueDateInfos": [ 
      { 
       "phaseName": "AAAAAAAA", 
       "dueDate": 1458645663900 
      }, 
      { 
       "phaseName": "BBBBBBB", 
       "dueDate": 1459098928400 
      }, 
      { 
       "phaseName": "CCCCCC", 
       "dueDate": 1459461540000 
      } 
      ], 
      "organizationTmTicket": null 
     } 
     ], 
     "fileInfos": [ 

     ] 

現在,我動態獲取對象應放在現有fileInfos陣列。

我已經通過BeanShell的嘗試之類的東西:

JSONObject fajl = new JSONObject();  

fajl.put("repositoryTicket",vars.get("repTicket")); 
fajl.put("name",vars.get("fileName")); 
fajl.put("fileTargetFormat","TXML"); 
fajl.put("fileFormatTicket","4YESyxwCtA2glxeFIbqVOwNwQhim05Uq"); 
fajl.put("fileFormatName","Word"); 

String CEO = vars.get("CEO"); 
JSONObject pom = new JSONObject(CEO); - note1 
pom.batchInfos[0].fileInfos[i-1].push(fajl); - note2 

注1 - CEO解析JSON,我需要爲下一個請求。

note2 - 我有計數器跟蹤處理元素的數量。我也試過這個沒有櫃檯。

對象fajl是好的,我知道,但我怎麼能插入到該數組?

回答

0

請嘗試下面的代碼。您將能夠添加陣列中的對象

String jsonDataString = "{\"background\":null,\"childInfos\":[],\"claimScope\":2,\"customAttributeInfos\":[],\"dueDate\":1459461540000,\"instructions\":null,\"name\":\"Client_1-23456\",\"owners\":[\"4YESyxwCtA2YBncmM+tnEU5Ze6Fev8K3\"],\"priority\":1,\"referenceFilesInfos\":[],\"batchInfos\":[{\"name\":\"Batch1\",\"targetFormat\":\"TXML\",\"workflowTicket\":\"4YESyxwCtA3PqFg+3vJ6nE5Ze6Fev8K3\",\"targetLanguageInfos\":[{\"targetLanguageLocale\":\"de-DE\",\"dueDate\":1459461540000,\"dueDateInfos\":[{\"phaseName\":\"AAAAAAAA\",\"dueDate\":1458645663900},{\"phaseName\":\"BBBBBBB\",\"dueDate\":1459098928400},{\"phaseName\":\"CCCCCC\",\"dueDate\":1459461540000}],\"organizationTmTicket\":null}],\"fileInfos\":[]}]}"; 
      JSONObject mainObject = new JSONObject(jsonDataString); 
      JSONObject fajl = new JSONObject(); 
      JSONArray list = new JSONArray(); 
      JSONArray batchInfos = mainObject.getJSONArray("batchInfos"); 
      JSONObject obj = batchInfos.getJSONObject(0); 
      JSONArray fileInfos = obj.getJSONArray("fileInfos"); 
      for(int i=0;i<3;i++){ 
       fajl.put("repositoryTicket", i); 
       fajl.put("name", i); 
       fajl.put("fileTargetFormat", "TXML"); 
       fajl.put("fileFormatTicket", "4YESyxwCtA2glxeFIbqVOwNwQhim05Uq"); 
       fajl.put("fileFormatName", "Word"); 
       fileInfos.put(fajl); 
      } 
      System.out.println(mainObject);