如何从Java中的URL获取JSON数据?

时间:2012-04-03 13:49:18

标签: java json url extract

我检查了很多页面,但大多数教程和脚本都返回了这种类型的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"
  }
]

3 个答案:

答案 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")
}

请注意检查空值/小心铸造等。