将JSON数据转换为一组Java对象

时间:2012-09-24 01:11:16

标签: java json

是否有一个工具在给定JSON数据时用Java生成JSON对象?这个工具要么假设一个“流行的”JSON库,要么让你指定要使用的JSON库。 例如,使用有效的JSON数据

{
    "age":100,
    "name":"mkyong.com",
    "messages":["msg 1","msg 2","msg 3"]
}

使用“org.json.simple.*”时,该工具会生成类似这样的内容

JSONObject obj = new JSONObject();
obj.put("name", "mkyong.com");
obj.put("age", new Integer(100));

JSONArray list = new JSONArray();
list.add("msg 1");
list.add("msg 2");
list.add("msg 3");

obj.put("messages", list);

3 个答案:

答案 0 :(得分:5)

使用Jackson,就像使用ObjectMapper并创建POJO来表示您的JSON对象一样简单:

public class Person {
  private int age;
  private String name;
  private List<String> messages;

  // getters/setters
}

然后:

String json = "{\"age\":100,\"name\":\"mkyong.com\",\"messages\":[\"msg 1\",\"msg 2\",\"msg 3\"]}";
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(json.getBytes(), Person.class);
System.out.println(person.getMessages()); // [msg 1, msg 2, msg 3]

要反过来,请使用writeValue

Person person = new Person();
person.setAge(100);
// ...
mapper.writeValue(..., person);

答案 1 :(得分:2)

Jackson是一个用于在JSON和Java POJO之间进行转换的流行框架。

答案 2 :(得分:0)

FlexJson也是一个很好的图书馆,类似于我曾尝试过的杰克逊。

您还可以尝试其他选项,例如GsonFastJsonjson-lib

请分享您喜欢哪一个以及为什么。