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();
}
}
}
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();
}
Jackson流式API的更多相关文章
- jackson 流式API
http://www.cnblogs.com/lee0oo0/articles/2652528.html Jackson提供了三种可选的JSON处理方法 1.流式API com.fasterx ...
- Java8 流式 API(`java.util.stream`)
熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C♯ 中,有 LINQ 来实现.那 ...
- Hadoop_11_HDFS的流式 API 操作
对于MapReduce等框架来说,需要有一套更底层的API来获取某个指定文件中的一部分数据,而不是一整个文件 因此使用流的方式来操作 HDFS上的文件,可以实现读取指定偏移量范围的数据 1.客户端测试 ...
- Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
什么是流处理 如果有 java 使用经验的同学一定会对 java8 的 Stream 赞不绝口,极大的提高了们对于集合类型数据的处理能力. int sum = widgets.stream() .fi ...
- lambda表达式以及stream流式api用法
https://www.cnblogs.com/aoeiuv/p/5911692.html 这篇文章讲的简单全面,记录下 kotlin一些符号的用法 https://www.cnblogs.com/l ...
- java JAXB + STAX(是一种针对XML的流式拉分析API)读取xml
JDK1.5需要添加jar包,1.6以后就不需要了<dependency> <groupId>stax</groupId> <artifactId>st ...
- 使用flink Table &Sql api来构建批量和流式应用(2)Table API概述
从flink的官方文档,我们知道flink的编程模型分为四层,sql层是最高层的api,Table api是中间层,DataStream/DataSet Api 是核心,stateful Stream ...
- 使用flink Table &Sql api来构建批量和流式应用(3)Flink Sql 使用
从flink的官方文档,我们知道flink的编程模型分为四层,sql层是最高层的api,Table api是中间层,DataStream/DataSet Api 是核心,stateful Stream ...
- FunDA(2)- Streaming Data Operation:流式数据操作
在上一集的讨论里我们介绍并实现了强类型返回结果行.使用强类型主要的目的是当我们把后端数据库SQL批次操作搬到内存里转变成数据流式按行操作时能更方便.准确.高效地选定数据字段.在上集讨论示范里我们用集合 ...
随机推荐
- 利用远程服务器在docker容器搭建pyspider运行时出错的问题
This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issu ...
- Java组合模式
定义:将对象组合成树形结构以表示 部分--整体的层次结构 组合模式使客户端对单个对象和组合对象保持一致的方式处理 类型:结构型 优点: 1.清楚地定义分层次的复杂对象,表示对象的全部去或部分层次 2 ...
- leetcode目录
Leetcode 1. 数组 2. 动态规划 3. 字符串 4. 链表.双指针.排序 5. 树 6. 回溯算法.贪心算法.分治算法.
- ReSharper反编译C#类库
经常会在使用C#类中的某个函数时想了解其中具体的代码,可是F12转到定义后只能看到函数简单的声明, 看不到方法体中的代码,这挺让人沮丧的.. 如下: F12进入后显示的是元数据, Equals函数只能 ...
- 使用EasyNetQ简化RabbitMQ操作
关于具体的操作看查看官方文档:https://github.com/EasyNetQ/EasyNetQ 也可以参考中文翻译版本:http://www.cnblogs.com/HuangLiang/p/ ...
- BZOJ4451 [Cerc2015]Frightful Formula 多项式 FFT 递推 组合数学
原文链接http://www.cnblogs.com/zhouzhendong/p/8820963.html 题目传送门 - BZOJ4451 题意 给你一个$n\times n$矩阵的第一行和第一列 ...
- Servlet(四):request和response对象
Request对象:问题: 浏览器发起请求到服务器,会遵循HTTP协议将请求数据发送给服务器. 那么服务器接受到请求的数据改怎么存储呢?不但要存,而且要保证完成性. 解决: 使用对象进行存储,服务器每 ...
- 基础知识-Mockjs进行数据模拟
目录 1. 目标 2. 创建模拟数据服务器 3. 安装 mockjs, 熟悉 mockjs 语法 4. 设置代理,解决 vue 项目跨域问题 5. 设置响应头,解决无法获取获取 token 和 coo ...
- drf序列化组件
rest_framework序列化之Serializer 步骤: 1.自定义一个类,继承Serializer类: 2.在类中写要序列化的字段: 3.使用:在views.py文件中,book_ser=B ...
- Android应用程序后台加载数据
从ContentProvider查询你需要显示的数据是比较耗时的.如果你在Activity中直接执行查询的操作,那么有可能导致Activity出现ANR的错误.即使没有发生ANR,用户也容易感知到一个 ...