Jackson说明
Jackson说明

package com.stono.sboot2_chp4_jackson.controller; import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.stono.sboot2_chp4_jackson.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map; @Controller
public class DataBindController {
@Qualifier("getObjectMapper")
@Autowired
ObjectMapper objectMapper; @RequestMapping("/updateUsers.json")
@ResponseBody
public String updateUsers(@RequestBody List<User> list) {
StringBuilder builder = new StringBuilder();
for (User user : list) {
builder.append(user.getName()).append(" ");
}
return builder.toString();
} @RequestMapping("/customize.json")
@ResponseBody
public String costomize() throws IOException {
String jsonInput = "[{\"name\":\"stono\",\"id\":1},{\"name\":\"tom\",\"id\":2}]";
JavaType type = getCollectionType(List.class, User.class);
List<User> users = objectMapper.readValue(jsonInput, type);
return String.valueOf(users.size());
} public JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
} @JsonView(User.IdView.class)
@RequestMapping("/id.json")
@ResponseBody
public User queryIds() {
User user = new User();
user.setId(1);
user.setName("stono");
return user;
} @RequestMapping("/user.json")
@ResponseBody
public User user() {
User user = new User();
user.setId(1);
user.setName("stono");
return user;
} @RequestMapping("/dept.json")
@ResponseBody
public Department getDepartment() {
return new Department(1);
} class Department{
Map map = new HashMap();
private int id; public Department(int id) {
this.id = id;
map.put("newAttr", 1);
} @JsonAnyGetter
public Map<String, Object> getOtherProperties() {
return map;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
}
} }
package com.stono.sboot2_chp4_jackson.controller; import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import java.io.IOException;
import java.io.StringWriter; @Controller
@RequestMapping("/stream")
public class JacksonStreamController { @Qualifier("getObjectMapper")
@Autowired
ObjectMapper objectMapper; @RequestMapping("/parser.json")
@ResponseBody
public String parser() throws IOException {
String json = "{\"name\":\"stono\",\"id\":1}";
JsonFactory f = objectMapper.getFactory();
String key = null, value = null;
JsonParser parser = f.createParser(json);
JsonToken token = parser.nextToken();
System.out.println("token1:"+token);
token = parser.nextToken();
System.out.println("token2:"+token);
if (token == JsonToken.FIELD_NAME) {
key = parser.currentName();
}
token = parser.nextToken();
System.out.println("token3:"+token);
value = parser.getValueAsString();
parser.close();
return key+","+value;
} @RequestMapping("/generator.html")
@ResponseBody
public String generate() throws IOException {
JsonFactory f = objectMapper.getFactory();
StringWriter sw = new StringWriter();
JsonGenerator g = f.createGenerator(sw);
g.writeStartObject();
g.writeStringField("name","stono");
// g.writeString("string");
g.writeEndObject();
g.close();
return sw.toString(); }
}
Jackson说明的更多相关文章
- jackson简单使用,对象转json,json转对象,json转list
添加jackson依赖: // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core compile g ...
- Jackson 通过自定义注解来控制json key的格式
Jackson 通过自定义注解来控制json key的格式 最近我这边有一个需求就是需要把Bean中的某一些特殊字段的值进行替换.而这个替换过程是需要依赖一个第三方的dubbo服务的.为了使得这个转换 ...
- Jackson的简单用法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1简介 Jackson具有比较高的序列化和反序列化效率,据测试,无论是 ...
- jackson error 含义log
1. 反序列化失败,类型不匹配 Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserial ize ...
- jackson annotations注解详解
jackson中常用到的注解 猛击下面的连接地址 http://blog.csdn.net/sdyy321/article/details/40298081
- jackson官方快速入门文档
官方地址: http://jackson.codehaus.org/ http://wiki.fasterxml.com/JacksonInFiveMinutes http://wiki.faster ...
- Jackson将json字符串转换成泛型List
Jackson,我感觉是在Java与Json之间相互转换的最快速的框架,当然Google的Gson也很不错,但是参照网上有人的性能测试,看起来还是Jackson比较快一点 Jackson处理一般的Ja ...
- 使用Jackson解析Json示例
原文http://blog.csdn.net/gebitan505/article/details/17005735 custom.json: { "country":&q ...
- Json解析工具Jackson(使用注解)
原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...
- Json解析工具Jackson(简单应用)
原文http://blog.csdn.net/nomousewch/article/details/8955796 概述 Jackson库(http://jackson.codehaus.org),是 ...
随机推荐
- 输入防抖 vue # 输入搜索的时候 及时搜索的快速访问接口的 解决方案 vue 中使用防抖和节流
输入防抖 watch: { value (newVal, oldVal) { if (this.timer) { clearTimeout(this.timer) } this.timer = set ...
- tabsGif
tabsGif
- 插入insert几种用法
1.insert ignore into 当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回.所以使用ignore请确保语句本身没有问题,否则也会被忽略掉.例如: INSERT I ...
- largest rectangle in histogram leetcode
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- ES6 export default 和 export 的区别
export default 和 export 区别: 1.export与export default均可用于导出常量.函数.文件.模块等 2.你可以在其它文件或模块中通过import+(常量 | 函 ...
- java分段加载数据,循环和递归两种方式
package org.jimmy.autosearch2019.test; import java.util.ArrayList; public class Test20190328 { priva ...
- HTML中 DOM操作的Document 对象详解(收藏)
Document 对象Document 对象代表整个HTML 文档,可用来访问页面中的所有元素.Document 对象是 Window 对象的一个部分,可通过 window.document 属性来访 ...
- IP封包协议头/TCP协议头/TCP3次握手/TCP4次挥手/UDP协议头/ICMP协议头/HTTP协议(请求报文和响应报文)/IP地址/子网掩码(划分子网)/路由概念/MAC封包格式
IP协议头IP包头格式: 1.版本号:4个bit,用来标识IP版本号.这个4位字段的值设置为二进制的0100表示IPv4,设置为0110表示IPv6.目前使用的IP协议版本号是4. 2.首部长度:4个 ...
- elasticsearch 中文 term & completion suggester
Term suggester 创建索引 curl -XPUT 'http://172.16.125.136:9200/term?pretty'创建 mapping curl -XPOST http:/ ...
- LeetCode(25)Reverse Nodes in k-Group
题目 Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...