我检查了很多页面,但大多数教程和脚本都返回了这种类型的JSON输出的错误代码。那么我如何才能从Java中的这个JSON中提取数据?:
[
{
"user":{"id":"1","username":"user1"},
"item_name":"item1",
"custom_field":"custom1"
},
{
"user":{"id":"2","username":"user2"},
"item_name":"item2",
"custom_field":"custom2"
},
{
"user":{"id":"3","username":"user3"},
"item_name":"item3",
"custom_field":"custom3"
}
]
答案 0 :(得分:1)
如果你想使用Gson,那么首先你要声明用于保存每个元素和子元素的类:
public class MyUser {
public String id;
public String username;
}
public class MyElement {
public MyUser user;
public String item_name;
public String custom_field;
}
然后声明最外层元素的数组(因为在您的情况下,JSON对象是JSON数组),并分配它:
MyElement[] data = gson.fromJson (myJSONString, MyElement[].class);
然后,您只需访问data
。
要记住的重要一点是,您声明的属性的名称和类型应与JSON字符串中的属性相匹配。例如“id”,“item_name”等。
答案 1 :(得分:0)
如果您尝试在Java中序列化/反序列化json,我建议使用Jackson。 http://jackson.codehaus.org/
下载Jackson后,您可以将json字符串反序列化为与JSON中的对象匹配的对象。
杰克逊提供的注释可以附加到您的班级,这使得反序列化变得非常简单。
答案 2 :(得分:0)
你可以试试JSON Simple
http://code.google.com/p/json-simple/
示例:
JSONParser jsonParser = new JSONParser();
JSONArray jsonArray = (JSONArray) jsonParser.parse(jsonDataString);
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject obj = (JSONObject) jsonArray.get(i);
//Access data with obj.get("item_name")
}
请注意检查空值/小心铸造等。