2016-11-04 10 views
1
[ 
{ 
    "name": "Test", 
    "type": "Private", 
    "item":[{"itmeNo":"PT-15003C","quantity":"3"}, 
      {"itmeNo":"PT-15003C","quantity":"3"}], 

    "successMsg":"Item(s) added to the job list." 
    } 
] 

こんにちは、私は私のJSONデータをjson.Aboveがされて使用してデータのパラメータをしています を使用してフォームに一緒に複数のデータを入力し、私は私が一緒にITEMNOと数量を入力する必要が前記一つの形態で、このデータを入力したいです。どのようにjsonを使用してデータのパラメータ化を使用して行うことができます。 キーと値のペアが1つあるとき、私のコードは動作していますが、この場合、誰も解決策を得るのを助けてくれますか?私は単一のキーのペア値のために次のコードを書いています。はJSONデータ

public static Object[][] getData(String path) { 
    JSONParser parser = new JSONParser(); 
    JSONArray jArray = null; 
    Object[][] testData = null; 
    try { 
     jArray = (JSONArray) parser.parse(new FileReader(System.getProperty("user.dir") + path)); 
     testData = new Object[jArray.size()][1]; 
     Hashtable<String, String> table = new Hashtable<String, String>(); 
     int i = 0; 
     for (Object obj : jArray) { 
      table = new Hashtable<String, String>(); 
      JSONObject objJson = (JSONObject) obj; 
      Set<?> keys = objJson.keySet(); 
      Iterator a = keys.iterator(); 
      while (a.hasNext()) { 
       String key = (String) a.next(); 
       String value = (String) objJson.get(key); 
       // System.out.print("key : "+key); 
       // System.out.println(" value :"+value); 
       table.put(key, value); 
      } 
      testData[i][0] = table; 
      i++; 
     } 
     return testData; 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 
+0

あなたの質問は、あなたがまさにそれをクリアしてください何をしたいのか、明確ではありません。 – Vickyexpert

+0

@気分:今は、複数のオブジェクトが再び存在する「アイテム」配列に悩まされているようです。その場合、getJSONarrayを使用して「item」を渡して、配列の数を知った後で配列内のオブジェクトを繰り返してもかまいません。 – Max

+0

データ駆動型テストを作成しようとしていますか?その場合、[data-provider-extension](https://github.com/cbeust/testng/wiki/3rd-party-extensions#data-provider-extension)でTestNGを使用することができます。 – user861594

答えて

1

非常に簡単です。まず、クラスを作成して、TestObject.javaItem.javaを次のようにしてjson構造に変換します。

TestObject.java

import java.util.List; 

public class TestObject { 
    private String name; 
    private String type; 
    private List<Item> items; 
    private String successMsg; 

    /** 
    * @return the name 
    */ 
    public String getName() { 
     return name; 
    } 
    /** 
    * @param name the name to set 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 
    /** 
    * @return the type 
    */ 
    public String getType() { 
     return type; 
    } 
    /** 
    * @param type the type to set 
    */ 
    public void setType(String type) { 
     this.type = type; 
    } 
    /** 
    * @return the items 
    */ 
    public List<Item> getItems() { 
     return items; 
    } 
    /** 
    * @param items the items to set 
    */ 
    public void setItems(List<Item> items) { 
     this.items = items; 
    } 
    /** 
    * @return the successMsg 
    */ 
    public String getSuccessMsg() { 
     return successMsg; 
    } 
    /** 
    * @param successMsg the successMsg to set 
    */ 
    public void setSuccessMsg(String successMsg) { 
     this.successMsg = successMsg; 
    } 
} 

次のようにItem.java

public class Item { 
    private String itemNo; 
    private int qty; 

    /** 
    * @return the itemNo 
    */ 
    public String getItemNo() { 
     return itemNo; 
    } 
    /** 
    * @param itemNo the itemNo to set 
    */ 
    public void setItemNo(String itemNo) { 
     this.itemNo = itemNo; 
    } 
    /** 
    * @return the qty 
    */ 
    public int getQty() { 
     return qty; 
    } 
    /** 
    * @param qty the qty to set 
    */ 
    public void setQty(int qty) { 
     this.qty = qty; 
    } 

} 

は、今すぐあなたのJSON文字列を解析。以下は、基本を理解するのに役立ちますサンプルプログラムです:

Test.java

import java.util.ArrayList; 
import java.util.List; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class Test { 

    public static void main(String[] args) { 
     TestObject testObject = new TestObject(); 
     try { 
      JSONObject jsonObject = new JSONObject("{\"name\": \"Test\"," 
                + "\"type\": \"Private\"," 
                + "\"item\":[{\"itmeNo\":\"PT-15003C\",\"quantity\":\"3\"}," 
                + "   {\"itmeNo\":\"PT-15003C\",\"quantity\":\"3\"}]," 
                + "\"successMsg\":\"Item(s) added to the job list.\"}"); //pass json string 

      JSONArray jsonArray = jsonObject.getJSONArray("item"); //get the item jsonarray 

      testObject.setName(jsonObject.getString("name")); 
      testObject.setType(jsonObject.getString("type")); 

      List<Item> items = new ArrayList<>(); 
      Item item = null; 

      //Iterate the item array and add to the itemlist object 
      for (int i = 0; i < jsonArray.length() ; i++) { 
       JSONObject jsonItem = jsonArray.getJSONObject(i); 
       String itmeNo = jsonItem.getString("itmeNo"); 
       String quantity = jsonItem.getString("quantity"); 
       item = new Item(); 
       item.setItemNo(itmeNo); 
       item.setQty(Integer.parseInt(quantity)); 
       items.add(item); 
      } 

      testObject.setItems(items); 
      testObject.setSuccessMsg(jsonObject.getString("successMsg")); //Now you will have a testObject which have all values from json. 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 


}