Jackson流式API

public class JacksonTester {

  public static void main(String args[]){

   JacksonTester tester = new JacksonTester();

   try {    

     JsonFactory jasonFactory = new JsonFactory();

     JsonGenerator jsonGenerator = jasonFactory.createJsonGenerator(new File(

      "student.json"), JsonEncoding.UTF8);

     // {

     jsonGenerator.writeStartObject();

     // "name" : "Mahesh Kumar"

     jsonGenerator.writeStringField("name", "Mahesh Kumar");

     // "age" : 21

     jsonGenerator.writeNumberField("age", 21);

     // "verified" : false

     jsonGenerator.writeBooleanField("verified", false);

     // "marks" : [100, 90, 85]

     jsonGenerator.writeFieldName("marks");

     // [

     jsonGenerator.writeStartArray();

     // 100, 90, 85

     jsonGenerator.writeNumber(100);

     jsonGenerator.writeNumber(90);

     jsonGenerator.writeNumber(85);

     // ]

     jsonGenerator.writeEndArray();

     // }

     jsonGenerator.writeEndObject();

     jsonGenerator.close();    

     //result student.json

     //{

     //  "name":"Mahesh Kumar",

     //  "age":21,

     //  "verified":false,

     //  "marks":[100,90,85]

     //}

     ObjectMapper mapper = new ObjectMapper();

     Map<String,Object> dataMap = mapper.readValue(new File("student.json"), Map.class);

     System.out.println(dataMap.get("name"));

     System.out.println(dataMap.get("age"));

     System.out.println(dataMap.get("verified"));

     System.out.println(dataMap.get("marks"));

   } catch (JsonParseException e) {

     e.printStackTrace();

   } catch (JsonMappingException e) {

     e.printStackTrace();

   } catch (IOException e) {

     e.printStackTrace();

   }

  }

}

junit test
public class JsonStreamTest {
    @Test
    public void read() throws JsonParseException, IOException{
        JsonFactory factory = new JsonFactory();
        InputStream is = this.getClass().getClassLoader().getResourceAsStream("user.json");
        JsonParser jsonParse = factory.createJsonParser(is);
        User user = new User();
        JsonToken token = jsonParse.nextToken();
        if(token==JsonToken.START_OBJECT){
            while((jsonParse.nextToken())!=JsonToken.END_OBJECT){
                String fieldName = jsonParse.getCurrentName();
                jsonParse.nextToken();
                if("name".equalsIgnoreCase(fieldName)){
                    Name name = new Name();
                    while(jsonParse.nextToken()!=JsonToken.END_OBJECT){
                        if(jsonParse.getCurrentName().equals("first")){
                            name.setFirst(jsonParse.getText());
                        }
                        if(jsonParse.getCurrentName().equals("last")){
                            name.setLast(jsonParse.getText());
                        }
                    }
                    user.setName(name);
                }else if("gender".equals(fieldName)){
                    String text = jsonParse.getText();
                    user.setGender(Gender.valueOf(text));
                }else if("verified".equals(fieldName)){
                    user.setVerified(jsonParse.getBooleanValue());
                }else if("userImage".equals(fieldName)){
                    user.setUserImage(jsonParse.getBinaryValue());
                }
            }
        }
        jsonParse.close();
    }

原文地址:https://www.cnblogs.com/dogdogwang/p/10792204.html

时间: 2024-11-07 04:19:52

Jackson流式API的相关文章

jackson 流式API

http://www.cnblogs.com/lee0oo0/articles/2652528.html Jackson提供了三种可选的JSON处理方法 1.流式API     com.fasterxml.jackson.core.JsonParser读     com.fasterxml.jackson.core.JsonGenerator写 2.树模型:提供一个 JSON 文档可变内存树的表示形式     com.fasterxml.jackson.databind.ObjectMapper

Java8 流式 API(`java.util.stream`)

熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C? 中,有 LINQ 来实现.那么在 Java 中有这样的操作吗?答案是有的,Java8 中引入了大量新特性,其中一个就是 Java 的流式 API. 在 Java 8 中,流(Stream)与迭代器类似,都是用来对集合内的元素进行某些操作.它们之间最大的差别,是对迭代器的每个操作都会即时生效,而对流的操作则不是这样.流的操作有两

流式处理框架对比

分布式流处理是对无边界数据集进行连续不断的处理.聚合和分析的过程,与MapReduce一样是一种通用计算框架,期望延迟在毫秒或者秒级别.这类系统一般采用有向无环图(DAG).DAG是任务链的图形化表示,用它来描述流处理作业的拓扑.在选择不同的流处理系统时,通常会关注以下几点: 运行时和编程模型:平台框架提供的编程模型决定了许多特色功能,编程模型要足够处理各种应用场景. 函数式原语:流处理平台应该能提供丰富的功能函数,比如,map或者filter这类易扩展.处理单条信息的函数;处理多条信息的函数a

storm:最火的流式处理框架

本文出处:www.cnblogs.com/langtianya/p/5199529.html 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这个宝贝马上就可以被卖家搜索出来.点击.购买啦,相反,如果这个宝贝要等到第二天或者更久才可以被搜出来,估计这个大哥就要骂娘了.再举一个推荐的例子,如果用户昨天在淘宝上买了一双袜子,今天想买一副泳镜去游泳,但是

Spark Streaming:大规模流式数据处理的新贵(转)

原文链接:Spark Streaming:大规模流式数据处理的新贵 摘要:Spark Streaming是大规模流式数据处理的新贵,将流式计算分解成一系列短小的批处理作业.本文阐释了Spark Streaming的架构及编程模型,并结合实践对其核心技术进行了深入的剖析,给出了具体的应用场景及优化方案. 提到Spark Streaming,我们不得不说一下BDAS(Berkeley Data Analytics Stack),这个伯克利大学提出的关于数据分析的软件栈.从它的视角来看,目前的大数据处

Java流式IO

1. 流式IO结构 下图只给出了较为常用的IO流的类图结构 Java的IO流主要分为两大类:字节流和字符流,字节流以InputStream和OutputStream为基础类,字符流以Reader和Writer为基础类. 2. 字节流 字节流以InputStream和OutputStream为基础类,常用的子类流有: FileInputStream和FileOutputStream用于从文件读写二进制数据: FilterInputStream和FilterOutputStream即过滤流,过滤流可

1.2.1 流式套接字编程

1.2  获取网络中计算机的IP地址和计算机名 在开发网络应用的过程中,经常需要获取网络中某台计算机的IP地址和计算机名称.在本节的内容中,将介绍如何使用Visual C++ 6.0开发一个实现上述功能的应用程序. 1.2.1  流式套接字编程(1) 网络数据的传输是通过套接字实现的.套接字有3种类型:流式套接字(SOCK_ STREAM),数据报套接字(SOCK_DGRAM)及原始套接字(RAW).在本小节的内容中,将首先讲解流式套接字编程的基本知识. 流式套接字是面向连接的,提供双向.有序.

“流式”前端构建工具——gulp.js 简介

Grunt 一直是前端领域构建工具(任务运行器或许更准确一些,因为前端构建只是此类工具的一部分用途)的王者,然而它也不是毫无缺陷的,近期风头正劲的 gulp.js 隐隐有取而代之的态势.那么,究竟是什么使得 gulp.js 备受关注呢? Grunt 之殇 gulp.js 的作者 Eric Schoffstall 在他介绍 gulp.js 的 presentation 中总结了 Grunt 的几点不足之处: 插件很难遵守单一责任原则.因为 Grunt 的 API 设计缺憾,使得许多插件不得不负责一

流式断言器AssertJ介绍

本文来自网易云社区 作者:范旭斐 大家在使用testng.junit做自动化测试的过程中,经常会用到testng.junit自带的断言器,有时候对一个字符串.日期.列表进行断言很麻烦,需要借助到jdk或者第三方包的方法进行处理后断言,无形之中增加了代码量,测试用例方法的代码看起来也不够友好,很臃肿.总体来说,junit&testng的断言API还可以,功能不算强大,只能说是满足我们日常测试的需求.这里向大家推荐一款功能强大的流式断言器--AssertJ,所谓的流式断言就是相较于Assert的单个