在Java中将JSON对象转换为简单变量

时间:2015-04-01 13:28:50

标签: java json

我有一个非常繁重的JSON,其中包含许多参数,我想将它们转换为只包含其中一些参数的Java对象。

直接转换,例如

DataObject obj = gson.fromJson(br, DataObject.class);

不是一种选择。

如何访问对象中的单个字段(value下的datetype下的attributes下的completion_date)? JSON示例:

{"results":[
    {"date":{
        "attributes":{
        "type":null},
        "value":"December 13, 2010"},
    "is_structured":"No",
    "completion_date":{
        "attributes":{
            "type":"Anticipated"},
        "value":"March 2016"},
     ....

2 个答案:

答案 0 :(得分:4)

如果您不想直接将输入转换为预期的对象,可以从输入中创建JSONObject,如

JSONObject root = new JSONObject(input);

然后从那里完全导航到您需要的属性,例如:

root.getJSONArray("results").getJSONObject(0).getString("is_structured");

编辑:(在value下面接收date

root.getJSONArray("results").getJSONObject(0).getJSONObject("date").getString("value");

答案 1 :(得分:0)

您可以在bean定义中只包含所需的字段。例如,给定以下JSON

{
  firstName: 'It',
  lastName: 'works',
  ignoreMe: '!!!'
}

bean定义不包含ignoreMe

public class Contact {
    public String firstName; // setter and getter
    public String lastName;  // setter and getter
}

但它适用于Gson:

Gson gson = new Gson();
Contact contact = gson.fromJson(new FileReader(new File("test.json")), Contact.class);
System.out.println("It worked!");