我有一个非常繁重的JSON,其中包含许多参数,我想将它们转换为只包含其中一些参数的Java对象。
直接转换,例如
DataObject obj = gson.fromJson(br, DataObject.class);
不是一种选择。
如何访问对象中的单个字段(value
下的date
和type
下的attributes
下的completion_date
)?
JSON示例:
{"results":[
{"date":{
"attributes":{
"type":null},
"value":"December 13, 2010"},
"is_structured":"No",
"completion_date":{
"attributes":{
"type":"Anticipated"},
"value":"March 2016"},
....
答案 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!");