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

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

像这样的直接转换

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

不是一种选择。

如何访问对象中的单个字段(只是date下的value和在completion_date下的attributestype )? JSON示例:

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

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

 JSONObject root = new JSONObject(input); 

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

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

编辑:(按date收取value

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

您可以在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!");