参考文章:http://www.mkyong.com/java/jackson-streaming-api-to-read-and-write-json/
例子中某些方法已经废弃,直接替换掉了,将原文两个例子放在一个类中:
package com.jingshou.jackson; import java.io.File; import java.io.IOException; import com.fasterxml.jackson.core.JsonEncoding; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; public class JacksonTest6 { public static void main(String[] args) throws IOException { JsonFactory jfactory = new JsonFactory(); /*** write to file ***/ JsonGenerator jGenerator = jfactory.createGenerator(new File( "c:\\user.json"), JsonEncoding.UTF8); jGenerator.writeStartObject(); // { jGenerator.writeStringField("name", "mkyong"); // "name" : "mkyong" jGenerator.writeNumberField("age", 29); // "age" : 29 jGenerator.writeFieldName("messages"); // "messages" : jGenerator.writeStartArray(); // [ jGenerator.writeString("msg 1"); // "msg 1" jGenerator.writeString("msg 2"); // "msg 2" jGenerator.writeString("msg 3"); // "msg 3" jGenerator.writeEndArray(); // ] jGenerator.writeEndObject(); // } jGenerator.close(); /*** read from file ***/ JsonParser jParser = jfactory.createParser(new File("c:\\user.json")); // loop until token equal to "}" while (jParser.nextToken() != JsonToken.END_OBJECT) { String fieldname = jParser.getCurrentName(); if ("name".equals(fieldname)) { // current token is "name", // move to next, which is "name"'s value jParser.nextToken(); System.out.println(jParser.getText()); // display mkyong } if ("age".equals(fieldname)) { // current token is "age", // move to next, which is "name"'s value jParser.nextToken(); System.out.println(jParser.getIntValue()); // display 29 } if ("messages".equals(fieldname)) { jParser.nextToken(); // current token is "[", move next // messages is array, loop until token equal to "]" while (jParser.nextToken() != JsonToken.END_ARRAY) { // display msg1, msg2, msg3 System.out.println(jParser.getText()); } } } jParser.close(); } }
小结:
- 对于性能要求高的程序,推荐使用流API,否则使用其他方法
- 不管是创建JsonGenerator还是JsonParser,都是使用JsonFactory
本文出自"lijingshou"博客,转载请务必保留此出处http://lijingshou.iteye.com/blog/2003580
相关推荐
在这个名为"jackson操作json和javabean示例"的项目中,我们将深入探讨Jackson库的核心功能,特别是其流式API、工具类以及树型模型的使用。 1. **Jackson流式API**:流式API(Streaming API)是Jackson提供的低级别...
对于大数据量的处理,可以使用Jackson的Streaming API,它能高效地处理JSON输入输出,避免一次性加载整个JSON到内存中。 8. **模块(Module)**: Jackson有许多可选模块,如JAXB支持、Guava支持等,可以根据项目...
`JsonParser` 用于读取JSON数据,而 `JsonGenerator` 则用于生成JSON数据。 1. **JsonParser**: `JsonParser` 是解析JSON输入的抽象类,它通过一系列的事件(如开始对象、结束对象、字段名、值等)来解析JSON内容...
在这个核心模块中,Jackson定义了流式API(Streaming API)以及一些基本的共享抽象,这些抽象使得处理JSON数据变得高效且灵活。 流式API是Jackson的一个关键特性,它允许开发者逐个读取或写入JSON元素,而不需要一...
Jackson 提供了多种API,如 Streaming API、Object Mapper API 和 JsonNode API,适用于不同的场景,从高性能的序列化到复杂的映射。 3. **org.json**:这是一个轻量级的库,提供了一些基本的JSON对象,如 ...
目前维护的产品使用jackson处理json,现整理一下jackson相关资料,希望对初次接触jackson的新手有所帮助。 jackson主页: http://jackson.codehaus.org/ jackson document: ...
1. **XML解析器**:在Java中,处理XML数据通常使用DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)。DOM一次性加载整个XML文档到内存,适合小规模数据;SAX事件驱动,逐行...
- `JsonParser`用于读取JSON数据,而`JsonGenerator`用于生成JSON数据。 - 这种API基于事件驱动,允许程序逐个处理JSON元素,减少内存消耗和提高处理速度。 2. **数据绑定**: - 数据绑定是Jackson的核心特性,...
- **读取JSON字符串**:你可以从文件、网络流或字符串中读取JSON数据。 ```java String jsonString = Files.readString(Paths.get("path_to_your_json_file.json")); ``` - **将JSON字符串转换为Java对象**:...
1. **JsonParser**:这是解析JSON输入的类,用于读取JSON格式的数据流。JsonParser提供了逐个访问JSON结构中的元素(如对象、数组、字段等)的方法,可以用来解析JSON字符串或输入流。 2. **JsonGenerator**:与...
- 解析JSON:你可以创建一个`JsonParser`实例,然后使用它来逐个读取JSON令牌(如对象、数组、键值对等),并进行相应的处理。 - 生成JSON:通过`JsonGenerator`,你可以构建JSON结构,向输出流写入JSON数据。 - ...
- 性能优化时,考虑使用流式解析(Streaming API)以减少内存消耗。 - 使用try-catch块处理可能的`JSONException`,确保程序的健壮性。 总之,理解Android平台上的JSON解析源码有助于我们更好地利用这些工具,提升...
Jackson库支持的数据绑定方式包括Data Binding、Streaming API以及Tree Model。 ### 知识点二:如何使用Jackson进行Java对象与JSON的转换 #### 1. ObjectMapper类 在Jackson库中,`ObjectMapper`类是进行JSON数据...
5. **使用场景**:Jackson-databind适用于需要将Java对象与JSON数据进行交互的任何场合,例如RESTful Web服务、服务器端处理客户端请求、存储/读取JSON格式的配置文件等。Jackson的灵活性使得它可以处理复杂的对象...
Jackson是一个广泛使用的Java JSON处理库,其核心组件之一便是`jackson-core-asl`。这个库是Jackson 1.x版本中的核心部分,主要负责JSON序列化和反序列化的功能。在本文中,我们将深入探讨`jackson-core-asl-1.9.11....
在Java中,我们可以使用DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等库来解析和生成XML文档。 1. **DOM解析器**:DOM解析器将整个XML文档加载到内存中的一个树形...
总结,Jackson库是Java世界中处理JSON的首选工具,其高效的Streaming API、强大的序列化和反序列化能力,以及丰富的注解配置,都使其在处理JSON数据时表现出色。无论是在小型项目还是大型企业级应用中,Jackson都能...
- **功能强大**:它是最强大的处理方式之一,能够以离散事件的形式读取和写入 JSON 内容。 - **低开销**:具有最低的开销,并提供最快的数据读写操作速度。 - **类比于 Stax 解析器**:类似于 XML 中的 Stax 解析...
在Java中,我们可以通过DOM(Document Object Model)、SAX(Simple API for XML)或者StAX(Streaming API for XML)等XML解析库来读取和解析KML文件。这里可能会使用到如JAXB(Java Architecture for XML Binding...
1. `JsonParser`:用于读取JSON输入并提供流式API。 2. `JsonGenerator`:用于将Java对象写入JSON输出,也支持流式处理。 3. `ObjectMapper`:作为核心类,提供了将Java对象与JSON之间相互转换的高级接口,支持树...