我是JSON解析器的新手,我试图从“sizes”标签中提取所有数据集,即在复杂的嵌套循环中从JSON文件中提取值(小,是,xsmall,NO,Medium和yes)但是不起作用。我使用GSON解析JSON文件并使用JAVA作为编程语言
这里JSON文件的外观如何
{ response: "ok",
prodinfo: {
sizes: [
{ size:"small",
available: "yes"
},
{ size:"xsmall",
available: "No"
},
{ size:"Medium",
available: "yes"
}
]
}
}
这就是我做的
int array = jsonParser14.parse(json14).getAsJsonObject().get("ProdInfo").getAsJsonObject().getAsJsonArray("sizes").size();
JsonArray sizes = (JsonArray) jsonParser15.parse(json15).getAsJsonObject().get("ProdInfo").getAsJsonObject().getAsJsonArray("sizes");
for (int i = 0; i <= array; i++) {
String size = sizes.get(i).getAsString();
System.out.println("data extracted are: " + size);
}
我们将不胜感激。 感谢
答案 0 :(得分:1)
我通常通过创建一个包含必填字段的公共类来对待它:
public class ProdSize {
public String size;
public String available;
}
public class ProdInfo {
public ProdSize[] sizes;
}
public class Message {
public String response;
public ProdInfo prodinfo;
}
然后我只需要在gson中执行此操作:
Gson gson = new GsonBuilder().create();
Message mess = gson.fromJson(theJsonString, Message.class);
然后,我没有任何循环来解析JSON。我直接把我的尺寸放在
中mess.prodinfo.sizes
例如,您可以像这样打印它们
for (int i=0; i<mess.prodinfo.sizes.length; i++) {
ProdSize size = mess.prodinfo.sizes[i];
System.out.println("Size " + size.size + " -> " + size.available);
}
答案 1 :(得分:0)
类似的东西:
var sizes = json.prodinfo.sizes;
for (item in sizes) {
if (sizes.hasOwnProperty(item)) {
var isAvailable = sizes[item].available;
alert(isAvailable);
}
}
此处示例:http://jsfiddle.net/nG88B/3/
修改强>: 看起来你需要先解析JSON。在这种情况下(如果它有效)你可以这样做:
var obj = JSON.parse(jsonStr);