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说明的更多相关文章

  1. jackson简单使用,对象转json,json转对象,json转list

    添加jackson依赖: // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core compile g ...

  2. Jackson 通过自定义注解来控制json key的格式

    Jackson 通过自定义注解来控制json key的格式 最近我这边有一个需求就是需要把Bean中的某一些特殊字段的值进行替换.而这个替换过程是需要依赖一个第三方的dubbo服务的.为了使得这个转换 ...

  3. Jackson的简单用法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1简介 Jackson具有比较高的序列化和反序列化效率,据测试,无论是 ...

  4. jackson error 含义log

    1. 反序列化失败,类型不匹配 Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserial ize ...

  5. jackson annotations注解详解

    jackson中常用到的注解 猛击下面的连接地址 http://blog.csdn.net/sdyy321/article/details/40298081

  6. jackson官方快速入门文档

    官方地址: http://jackson.codehaus.org/ http://wiki.fasterxml.com/JacksonInFiveMinutes http://wiki.faster ...

  7. Jackson将json字符串转换成泛型List

    Jackson,我感觉是在Java与Json之间相互转换的最快速的框架,当然Google的Gson也很不错,但是参照网上有人的性能测试,看起来还是Jackson比较快一点 Jackson处理一般的Ja ...

  8. 使用Jackson解析Json示例

    原文http://blog.csdn.net/gebitan505/article/details/17005735 custom.json: {     "country":&q ...

  9. Json解析工具Jackson(使用注解)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...

  10. Json解析工具Jackson(简单应用)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 概述 Jackson库(http://jackson.codehaus.org),是 ...

随机推荐

  1. PHP24 自定义分页类

    分页类的定义 <?php /** * Class MyPage 分页类 * @package core */ class MyPage { private $totalCount; //数据表中 ...

  2. 事物的四大特性(acid)

    如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一 ...

  3. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  4. MySQL内外联结

    一.内联结(INNER JOIN) MySQL内联结使用INNER JOIN将多个数据表t1,t2隔开,结果是t1里的每一个数据行将与t2里的每一个数据行组合. 逗号连接符.CROSS JOIN和JO ...

  5. ubuntu18.04 server配置静态ip

    最新发布的ubuntu18.04 server,启用了新的网络工具netplan,对于命令行配置网络参数跟之前的版本有比较大的差别,现在介绍如下:1.其网络配置文件是放在/etc/netplan/50 ...

  6. Django 1.8.11 REST风格路由

    # -*- coding: utf-8 -*- """ Tencent is pleased to support the open source community b ...

  7. Spring Boot 默认配置无法访问静态资源

    问题:将资源放在resources/static目录下,Spring boot不能加载 解决:在启动文件中,添加如下红字部分. @SpringBootApplication @Configuratio ...

  8. cs229_part1

    开篇题 这个系列的文章主要参考cs229课程的内容,按照自己的思路和其他课程与书籍方式梳理下来,可能顺序和内容都与cs229有点不一样,但是参考内容我都会附在最后.而且这个系列主要讲个人的理解不想太多 ...

  9. luogu2894 [USACO08FEB]酒店Hotel

    跟线段树求区间最值一样每个节点维护左边开始的最大连续空房间数.右边开始的最大连续空房间数.这个区间内的最大连续空房间数 #include <iostream> #include <c ...

  10. zoj 2724 Windows Message Queue

    Windows Message Queue Time Limit: 2 Seconds      Memory Limit: 65536 KB Message queue is the basic f ...