在Java中将JSON对象转换为简单变量
我有一个非常繁重的JSON,其中包含许多参数,我想将它们转换为只包含其中一些参数的Java对象。
像这样的直接转换
DataObject obj = gson.fromJson(br, DataObject.class);
不是一种选择。
如何访问对象中的单个字段(只是date
下的value
和在completion_date
下的attributes
下type
)? 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!");