Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将JSON对象转换为简单变量_Java_Json - Fatal编程技术网

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

在Java中将JSON对象转换为简单变量,java,json,Java,Json,我有一个非常繁重的JSON,其中包含很多参数,我想将这些参数转换为一个只包含其中几个参数的Java对象 像这样的直接转换 DataObject obj = gson.fromJson(br, DataObject.class); 这不是一种选择 如何访问对象中的单个字段(仅在日期下的值和属性下的类型,完成日期下的即可)? JSON示例: {"results":[ {"date":{ "attributes":{ "type":null},

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

像这样的直接转换

DataObject obj = gson.fromJson(br, DataObject.class);
这不是一种选择

如何访问对象中的单个字段(仅在
日期下的
属性下的
类型
完成日期下的
即可)?
JSON示例:

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

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

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

JSONObject root = new JSONObject(input);
然后从那里准确导航到所需的属性,例如:

root.getJSONArray("results").getJSONObject(0).getString("is_structured");
编辑:(在日期下接收值)


“没有选择”?为什么?可能您正在谈论JSON.parse看看这个,您将JSON作为字符串,并且希望直接访问给定的属性?或者您有某种映射或JsonObject?作为字符串或文本文件。谢谢您的回答!获取子字段的语法是什么,例如
date.value
?因此您必须导航到更深的
JSONObject
。我的编辑工作得很好。谢谢你花时间给我解释,我现在肯定能理解这件事了!
root.getJSONArray("results").getJSONObject(0).getJSONObject("date").getString("value");