gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:15 25 4
gpt4 key购买 nike

这里是一个java类CreateDoc,它从作为生产者端的一个Web服务发送到另一个作为消费者端的Web服务,作为带有content-type: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"
}
}
]
]

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

最佳答案

这里有一些示例代码,展示了如何使用 Jackson ObjectMapper 来解析数据。请注意,代码假设数据存储在文件中,您可以根据需要对其进行修改以满足您的需求。

这是主类:

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;
}
}

和 DocMetData:

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;
}
}

println 的输出是:

[[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]]]]

关于java - 如何在java中处理嵌套在数组中的JSON数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50399373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com