我已经通过各种线程阅读并发现了类似的问题,但在为我的特定问题找到解决方案方面却一直没有成功。
JSONObject orr = (JSONObject)orderRows.get("orderRows");
System.out.println("data in orr = " + orr + "orr's type = " + orr.getClass());
返回:
orr =中的数据 {" 470":[{" locationId":2"量":1,"的productId":1007}],&#34 ; 471":[{" locationId":2"量":1,"的productId":1008}]} ORR' S type = class org.json.simple.JSONObject
我试图将这些数据放入数组/列表/我可以使用密钥的任何地方,470,471来检索数据。
非常感谢任何建议或指示...
澄清:
JSONObject orr = (JSONObject)orderRows.get("orderRows");
JSONArray orderOne = (JSONArray)orr.get("471");
System.out.println(orderOne);
System.out.println(orderOne.get(0));
JSONObject orderOneKey = (JSONObject)orderOne.get(0);
System.out.println(orderOneKey.get("productId"));
这就是我之后所做的事情,但显然我不能做orr.get(&#34; 471&#34;),因为我不知道这个号码是什么。< / p>
编辑: 显然我不能回答我自己的问题8小时:
感谢朋友的帮助和一些小小的帮助,我找到了一个解决方案,我确信它不是最有说服力的,但它确实是我所追求的:
for(Object key: orr.keySet()) {
JSONArray orderOne = (JSONArray)orr.get(key);
JSONObject ordervalue = (JSONObject)orderOne.get(0);
System.out.println(ordervalue.get("productId"));
}
感谢您的帮助和建议。
答案 0 :(得分:1)
感谢朋友的帮助和一些摆弄,我发现了一个解决方案,我确信它不是最有说服力的,但它正是我所追求的:
for(Object key: orr.keySet()) {
JSONArray orderOne = (JSONArray)orr.get(key);
JSONObject ordervalue = (JSONObject)orderOne.get(0);
System.out.println(ordervalue.get("productId"));
}
感谢您的帮助和建议。
答案 1 :(得分:0)
响应中的数据类型为JSONObject(请参阅花括号{})。因此顶级对象有两个“字段”,470和471.这些字段返回的两个数据都是数组。这些数组每个只有一个项目,它们都是对象。以下是获取数据的示例:
JSONObject jsonObject = (JSONObject)orderRows.get("orderRows");
JSONArray firstArray = jsonObject.getJSONArray("470");
JSONArray secondArray = jsonObject.getJSONArray("471");
JSONObject firstObject = firstArray.get(0);
int locationId = firstObject.getId("locationId");
/*...etc...*/
现在,一旦你把它拉出来,你就可以将这些数据转换成你喜欢的任何结构,从而使这一点更加友好。
答案 2 :(得分:0)
您可以使用提供数据绑定支持的库。 您可以尝试Genson http://code.google.com/p/genson/,它快速,易于使用,并具有几个不错的功能。以下是您的问题的示例:
// first define a class matching your json
class Product {
private int locationId;
private int quantity;
private int productid;
// setter & getters
}
// then use genson
Map<String, Product[]> productsMap = new Genson().deserialize(jsonStream, new GenericType<Map<String, Product[]>>() {});
答案 3 :(得分:0)
你也可以这样做:
JSONArray jsonArr = new JSONArray();
jsonArr.put(jsonObj);
如果要将整个JSON对象放在JSON数组中。