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),是 ...
随机推荐
- C++中:点运算符和箭头运算符的区别
点运算符用于获取对象成员: 箭头运算符用于获取指针指向的对象的成员: 例如: std::string s1 = "string"; std::string *p = &s1 ...
- ubuntu中执行docker info出现警告信息WARNING: No memory limit support 或 WARNING: No swap limit support
docker info 指令报若下错误:WARNING: No memory limit support 或WARNING: No swap limit support 解决方法: 1.打开/etc/ ...
- 03 数据解析-Xpath
Xpath解析 XPath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但XPath明显比re具有优势,在网页分析上使re退居二线. ...
- Ubuntu16.04安装MySql5.7
安装方式有好多种,这里选择使用APT安装. 主要参考文档为官方文档:https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo- ...
- 《算法导论》 — Chapter 8 线性时间排序
序 到目前为止,关于排序的问题,前面已经介绍了很多,从插入排序.合并排序.堆排序以及快速排序,每一种都有其适用的情况,在时间和空间复杂度上各有优势.它们都有一个相同的特点,以上所有排序的结果序列,各个 ...
- Android开发——短信电话拦截/接听电话
1.短信拦截 首先需要声明的是,Android4.4版本以上,如果想做到短信拦截,必须成为default sms,把所有短信相关的功能都包揽了,然后再做短信拦截.但这种做法,适配性和兼容性的工作是非常 ...
- 火狐插件youdao word capturer无法删除。
[]火狐插件youdao word capturer无法删除. 魔芋记录一下: []一直无法删除,就网上找了下. 网上解释说是:有道词典自己安装的插件,所以火狐无法管理. 用来帮助 ...
- 大数据学习——yum练习安装jdk
yum list | grep jdk 安装jdk-1.8.0版本 -openjdk* 安装后,执行java -version 配置环境变量 使用vim /etc/profile 编辑profile文 ...
- Leetcode 264.丑数II
丑数II 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10 ...
- bzoj1004 [HNOI2008]Cards 置换群+背包
[bzoj1004][HNOI2008]Cards 2014年5月26日5,3502 Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿 ...