当前位置: 首页 > 知识库问答 >
问题:

java中如何处理嵌套在数组中的JSON数组

伍宝
2023-03-14

下面是一个java类CreateDoc,它从一个作为生产者端的web服务发送到另一个作为消费者端的web服务,其内容类型为:json

下面是类表示

class CreateDoc{
     DocMetData dMetaData;
     DocContent dCont;
}

Class DocMetData {
     String docNamel
     String docType;
}

Class DocContent {
     String data;
}

一旦我在消费者端接收到作为json的列表,我就不能将其用作java对象,并且内容类型是数组,其中json嵌套在数组中。

以下是代表:

[  
   [  
      {  
         "dMetaData":{  
            "docName":"string",
            "docType":"pdf"
         },
         "dCont":{  
            "data":"abc"
         }
      },
      {  
         "dMetaData":{  
            "docName":"string",
            "docType":"pdf"

         },
         "dCont":{  
            "data":"def"
         }
      },
      {  
         "dMetaData":{  
            "docName":"string",
            "docType":"pdf"

         },
         "dCont":{  
            "data":"ghk"
         }
      }
   ]
]

问题是如何处理这一点,并能够使用数据和表示为列表。

共有1个答案

农建弼
2023-03-14

下面的一些示例代码展示了如何使用JacksonObjectMapper解析数据。请注意,代码假定数据存储在文件中,您可以根据需要对其进行修改以满足您的需要。

下面是主要的类:

package parsing.arrayofarray;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class ArrayOfArray {

    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        String data = null;
        try {
            data = new String(Files.readAllBytes(Paths.get("src/main/resources/jsonArrayOfArray.json")));
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        List<List<CreateDoc>> results = null;

        try {
            results = mapper.readValue(data, new TypeReference<List<List<CreateDoc>>>(){});
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println(results);
    }

}

下面是支持类,首先是CreateDoc:

package parsing.arrayofarray;

public class CreateDoc {
    DocMetData dMetaData;
    DocContent dCont;
    public DocMetData getdMetaData() {
        return dMetaData;
    }
    public void setdMetaData(DocMetData dMetaData) {
        this.dMetaData = dMetaData;
    }
    public DocContent getdCont() {
        return dCont;
    }
    public void setdCont(DocContent dCont) {
        this.dCont = dCont;
    }
    @Override
    public String toString() {
        return "CreateDoc [dMetaData=" + dMetaData + ", dCont=" + dCont + "]";
    }
}
package parsing.arrayofarray;

public class DocContent {
    @Override
    public String toString() {
        return "DocContent [data=" + data + "]";
    }

    String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}
package parsing.arrayofarray;

public class DocMetData {
    String docName;
    String docType;
    public String getDocNamel() {
        return docName;
    }
    public void setDocName(String docName) {
        this.docName = docName;
    }
    @Override
    public String toString() {
        return "DocMetData [docNamel=" + docName + ", docType=" + docType + "]";
    }
    public String getDocType() {
        return docType;
    }
    public void setDocType(String docType) {
        this.docType = docType;
    }
}
[[CreateDoc [dMetaData=DocMetData [docNamel=string, docType=pdf], dCont=DocContent [data=abc]], CreateDoc [dMetaData=DocMetData [docNamel=string, docType=pdf], dCont=DocContent [data=def]], CreateDoc [dMetaData=DocMetData [docNamel=string, docType=pdf], dCont=DocContent [data=ghk]]]]
 类似资料:
  • 问题内容: 我必须将下面嵌套的Json数组的数据解析到我的应用程序中。我很困惑如何从中获取价值。 任何人都可以指导我如何从中获取内部价值。 我已经试过了 问题答案: 这是我认为您的JSON解析器应为的样子(可能存在一些拼写错误,我没有在编辑器上测试此代码:)):

  • 问题内容: 我在postgres json列中有一些类似于下面的json的json。我正在尝试查询它以识别一些输入错误的数据。我基本上是在寻找房屋描述与房屋号码相同的地址。我不太想办法。 我写了这个sql,它将找到数据匹配的地方: 显然,这仅适用于第一所学校的第一地址。有没有办法查询每所学校的所有地址? 问题答案: 在横向联接中使用的次数与要比较的json数组的深度一样多:

  • 我有一个包含对象和数组的嵌套数据结构。如何提取信息,即访问特定或多个值(或键)? 例如: 如何访问中第二个项目的?

  • 问题内容: 嗨,我在解组嵌套的JSON数组时遇到问题。我应该创建什么结构?我想避免使用尽可能多的东西,但是我真的不知道在这种情况下是否有可能。 杰森,我想解组: 和我想用来解组的结构: 链接到示例:https : //play.golang.org/p/owuMptNrix 问题答案: 是的,答案只是一小部分: 好感谢你的问题,我发现这个错误的工具,我总是用它的Json操作一起去,它可以为你节省很

  • 问题内容: 我有一个从数据库(JSON MySQL中的数据存储)检索数据的程序。 我设法得到对象。输出为: JSON对象: 我需要有关如何处理数据并将信息放入不同数组/对象的建议。例如 谢谢。 问题答案: 您可以使用Jackson Api来实现。 您必须创建与json对象相同的Pojo类(该类应具有“ attributes”,“ uuid”之类的成员)。 这是您必须使用的类 和代码 现在,您可以使

  • 问题内容: 我有一个包含对象和数组的嵌套数据结构。如何提取信息,即访问特定或多个值(或键)? 例如: 如何访问中的第二项? 问题答案: Preliminaries JavaScript只有一种可以包含多个值的数据类型: Object 。一个 阵列 是对象的一种特殊形式。 (普通)对象具有以下形式 数组具有以下形式 数组和对象都公开一个结构。数组中的键必须是数字,而任何字符串都可以用作对象中的键。键