`

Jackson学习四之使用Streaming API创建以及读取JSON

 
阅读更多

参考文章: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

分享到:
评论

相关推荐

    解析Java的Jackson库中Streaming API的使用

    主要介绍了解析Java的Jackson库中Streaming API的使用,Jackson被用于Java对象和JSON的互相转换,需要的朋友可以参考下

    Unity读取Json文件并解析

    Unity读取StreamingAssets文件夹下的Json文件并解析,含Litjson.dll文件

    jackson-jar

    目前维护的产品使用jackson处理json,现整理一下jackson相关资料,希望对初次接触jackson的新手有所帮助。 jackson主页: http://jackson.codehaus.org/ jackson document: ...

    jackson-databind-3.0.0.jar下载

    jackson-databind基于Jackson核心库构建,以简单易用和高性能著称,是目前最流行的JSON库之一。 jackson-databind的主要功能有: 1. ObjectMapper:jackson-databind的核心类,用于转换Java对象和JSON。使用简单,一般就一...

    twitter-streaming-api:轻松使用Twitter Streaming API

    轻松使用Twitter Streaming API Twitter提供了一种流API,您可以使用它执行一些有趣的操作,例如侦听包含特定字符串或用户可能采取的操作的推文(例如,喜欢推文,关注某人……)。 该软件包使使用API​​非常容易...

    flink-streaming-java_2.11-1.13.2-API文档-中文版.zip

    包含翻译后的API文档:flink-streaming-java_2.11-1.13.2-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-streaming-java_2.11:1.13.2; 标签:apache、flink、streaming、java、中文文档、...

    flink-streaming-java_2.12-1.14.3-API文档-中文版.zip

    包含翻译后的API文档:flink-streaming-java_2.12-1.14.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-streaming-java_2.12:1.14.3; 标签:apache、flink、streaming、java、中文文档、...

    springboot整合Jackson实例项目-附工具类

    说明:本篇讲的是Jackson的详细用法,Jackson工具类在文章最后,直接复制粘贴即可使用。 Jackson是公司中必用的组件之一,常用的还用阿里的Fastjson,但是由于一些原因bug与漏洞是在是太多,在注重安全的公司直接被...

    前端开源库-streaming-json-stringify

    前端开源库-streaming-json-stringify流式JSON stringify,流式JSON.stringify()。

    Face Recognition(face_recognition) Using Hadoop Streaming API

    Face Recognition(face_recognition) Using Hadoop Streaming API Face Recognition(face_recognition) Using Hadoop Streaming API

    jackson-core:Jackson的核心部分,定义了Streaming API以及基本的共享抽象

    该项目包含使用的核心低级增量(“流”)解析器和生成器抽象。 它还包括处理JSON格式的处理程序类型(解析器,生成器)的默认实现。 核心抽象不是特定于JSON的,尽管由于历史原因,命名在许多地方的确包含“ JSON”...

    jackson-core:Jackson的核心部分,定义了Streaming API以及基本的共享抽象

    该项目包含使用的核心低级增量(“流”)解析器和生成器抽象。 它还包括处理JSON格式的处理程序类型(解析器,生成器)的默认实现。 核心抽象不是特定于JSON的,尽管由于历史原因,命名在许多地方的确包含“ JSON”...

    Api-twitter-streaming-api.zip

    Api-twitter-streaming-api.zip,轻松使用twitter流api轻松使用twitter流api,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,...

    flink-streaming-java_2.11-1.10.0-API文档-中文版.zip

    包含翻译后的API文档:flink-streaming-java_2.11-1.10.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-streaming-java_2.11:1.10.0; 标签:flink、11、streaming、apache、java_2、jar...

    Unity打包发布后正确读取StreamingAssets文件夹下的Html文件DEMO

    1 Unity 打包后各种路径处理! 2 正确读取StreamingAssets文件夹里面的文件 3 调用手机里面邮箱像指定的邮箱地址发送邮件 4 调用手机里面浏览器打开Html文件

    flink-streaming-java_2.11-1.13.2-API文档-中英对照版.zip

    包含翻译后的API文档:flink-streaming-java_2.11-1.13.2-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.flink:flink-streaming-java_2.11:1.13.2; 标签:apache、flink、streaming、java、...

    StreamingAPI的Java客户端hbc.zip

    hbc (Hosebird Client)是Twitter Streaming API 的 Java 客户端开发包。主要特性:支持GZip、OAuth和分块(partitioning);自动重新连接,并进行适当的backfill计数;访问原始字节的有效负载;适时重新分配,并进行...

    Api-laravel-twitter-streaming-api.zip

    Api-laravel-twitter-streaming-api.zip,在laravel中轻松使用twitter流api在laravel应用中似乎可以使用twitter流api,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库...

    unity StreamingAssets.rar

    unity 在不同系统中下载跟读取StreamingAssets资源不同,这个脚本在ios跟安卓等移动设备中读取项目中的文档

    flink-streaming-java_2.12-1.14.3-API文档-中英对照版.zip

    包含翻译后的API文档:flink-streaming-java_2.12-1.14.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.flink:flink-streaming-java_2.12:1.14.3; 标签:apache、flink、streaming、java、...

Global site tag (gtag.js) - Google Analytics