2016-03-28 24 views
0

私はHTTPレスポンスからJSONデータを読んでいます。JSONPathによって抽出されたデータを置く必要があります。必要なデータはOKですが、デバッグ中に表示されますが、変更する必要のある他の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); 
関連する問題