gpt4 book ai didi

java - 使用Jackson解析和未命名数组

转载 作者:行者123 更新时间:2023-11-30 03:59:50 25 4
gpt4 key购买 nike

好的,我正在使用 Jackson 来解析 JSON 文件,问题是,该文件是一个大的未命名数组。其格式为:

[ {json stuff}, {json stuff}, ..., {json stuff} ]

所有 json 内容 只是常规 JSON 表达式,一旦我真正将其放入数组中,我就必须处理它们。

我找不到任何关于如何使用 Jackson 映射事物的真正教程,但需要找到一种方法将每个不同的事物映射到一个数组中,然后使用 Jackson 将每个特定的事物解析为其单独的组件。知道如何做到这一点吗?

附注我能找到的唯一真正的教程是:http://www.studytrails.com/java/json/java-jackson-Data-Binding.jsp

其中 DataSet[] 是文件中命名的数组。我想弄清楚如何执行该教程的操作,但上面的示例除外,其中数组不以名称开头。

P.P.S。这是我正在使用的代码:

映射到我的项目的基本 Jackson 代码:

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

URL url = null;
try {
url = new URL("my JSON URL");
} catch (MalformedURLException e) {
e.printStackTrace();
}

try {
ContactInfo contacts = mapper.readValue(url, ContactInfo.class);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

然后我的 ContactInfo 类只是具有 JSON URL 中定义的字段的 Getters 和 Setters。问题是,如果没有分解所有不同 JSON 节点的数组名称,我不知道如何访问各个联系人值,或者它们是否被覆盖。

最佳答案

只需使用 ContactInfo[]作为类(class)类型。这是一个有效的示例。

public class Example {
public static void main(String[] args) throws Exception {
String json = "[{\"name\":\"random\"},{\"name\":\"random\"},{\"name\":\"random\"}]";
ObjectMapper mapper = new ObjectMapper();
ContactInfo[] contactInfos = mapper.readValue(json, ContactInfo[].class);
System.out.println(contactInfos.length);
}

static class ContactInfo {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
}

或者,您可以使用 List<ContactInfo> ,但您需要 TypeReference .

List<ContactInfo> contactInfos = mapper.readValue(json, new TypeReference<List<ContactInfo>>() {});
System.out.println(contactInfos.size());

关于java - 使用Jackson解析和未命名数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232926/

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