我想知道是否有可能利用 ObjectMapper
从 Jackson
逐条阅读事件。
我有一个很大的json文件,其中包含许多需要转换为xml的事件。我不想将完整的json事件加载到我的内存中,而是希望逐个处理事件。因此,我正在利用 Java Jackson
这个库可以遍历json文件,每次获得一个json事件,然后我可以将其转换为xml。这样,一次只能将一个事件加载到内存中。
我知道我可以使用 JsonParser
从jackson开始,它将一个接一个地遍历json文件,但是这样,我需要处理很多事情。
我有从xsd创建的java类(使用 JAXB2
)所以我想用 ObjectMapper
上课地点 Jackson
它可以直接将每个事件Map到相应的java类,稍后我可以使用 Marshalling
方法。
我不明白如何使用 ObjectMapper
并将其分配给相应的java类。
下面是我的json文件的简单版本:(这是一个示例json我的原始json非常复杂)
{
"@context":"https://context.org/context.jsonld",
"isA":"SchoolManagement",
"format":"application/ld+json",
"schemaVersion":"2.0",
"creationDate":"2021-04-21T10:10:09+00:00",
"body":{
"members":[
{
"isA":"student",
"name":"ABCS",
"class":10,
"coaching":[
"XSJSJ",
"IIIRIRI"
],
"dob":"1995-04-21T10:10:09+00:00"
},
{
"isA":"teacher",
"name":"ABCS",
"department":"computer science",
"school":{
"name":"ABCD School"
},
"dob":"1995-04-21T10:10:09+00:00"
},
{
"isA":"boardMember",
"name":"ABCS",
"board":"schoolboard",
"dob":"1995-04-21T10:10:09+00:00"
}
]
}
}
我想逐一阅读“members”数组中的事件,并检查它是否是“student”、“teacher”等,然后将其分配给相应的类。
public class Main {
public static void main(String[] args) throws JsonParseException,
JsonMappingException,
IOException,
JAXBException {
final ObjectMapper objectMapper = new ObjectMapper();
// Accept the Null values for some fields
objectMapper.setSerializationInclusion(Include.NON_NULL);
// If any unknown properties found then do not fail
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//Here I want to read the element within an array
Student event = objectMapper.readValue(Main.class.getResourceAsStream("/events.json"), Student.class);
System.out.println(event);
}
}
2条答案
按热度按时间rggaifut1#
基本上,使用jackson2解析json有三种不同难度的方法。
objectmapper(mapper.readvalue()):要编写的代码更少-应该用于简单的数据绑定,
objectmapper(树模型):中等代码-应用于复杂的json
jsonparser(流模型):当需要最终性能时,应该使用更多的代码。
您正在寻找树模型。它结合了
JSONParser
易于使用ObjectMapper
. 试试这个ObjectMapper
就像下面一样有一个很好的关于树模型的教程
阅读更多:jackson2官方文档
cunj1qz12#
我将告诉你如何读取一个json文件并获取每个键的值,如何将其放入xml文件将在你手中。
1为json文件创建所需数量的pojo(您可以在此处自动生成:https://www.jsonschema2pojo.org/)
2代码:
现在你知道如何得到每一个关键与他的价值。
注意:我不放pojo类,因为它是4,它的代码太多,你可以从我上面留下的链接得到
注2:别怪我的拼字法,我还在学英语
例2: