jackson简单使用案例

准备:下载jackson的jar包,不要使用2.8版本,类加载器错误,原因未知

entity: getter和setter省略

public class Person {

private int id;
private String name;
@JsonProperty(value="ismale")
private boolean gender;
@JsonFormat(pattern="yyyy-MM-dd") //输入的格式必须满足,不然抛异常;json串也为该格式
private Date birthday;
@JsonIgnore
private List<String> hobby;
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", gender=" + gender
+ ", birthday=" + birthday + ", hobby=" + hobby + "]";
}

public Person() {
super();

}
}

//demo

package jackson;

import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.Test;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import entity.Person;

public class Demo {

/**
* json序列化
*
* 1,javabean转化为json
* 2,map转化为json
* 3,对象集合转化为json
* 4,复杂对象转换为json
*/
@Test
public void beanToJson() throws JsonProcessingException {

ObjectMapper mapper = new ObjectMapper();

/**
* bean换成json
*/
Person p = new Person(1, "略略", false, new Date(), Arrays.asList(new String[] {"打球", "游戏", "动漫"}));
String json = mapper.writeValueAsString(p);
System.out.println(json);

/**
* map换成json
*/
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", 110);
map.put("name", 3);
map.put("birthday", "2098-11-23");
json = mapper.writeValueAsString(map);
System.out.println(json);

/**
* beanList换成json
*/
Person[] ps = { new Person(1, "略略", false, new Date(), Arrays.asList(new String[] {"打球", "游戏", "动漫"})),
new Person(2, "哈哈", false, new Date(), Arrays.asList(new String[] {"打球"}))
};
json = mapper.writeValueAsString(ps);
System.out.println(json);

}

/**
* jackson注解 在entiry中使用
* 1,序列化时忽略属性@JsonIgnore
* 2,格式化日期属性@JsonFormat
* 3,把属性名序列化成另一个属性名@JsonProperty
*/

/**
* json反序列化
*
* 1,json转化Array
* 2,json转为javabean
* 3,json转为map
* 4,jason转为beanList
* 5,json转为List<Map<>>
* @throws IOException
* @throws JsonMappingException
* @throws JsonParseException
*
*/
@Test
public void jsonToBean() throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();

/**
* json转为javabean
*/
String str = "{\"id\":1,\"name\":\"略略\",\"birthday\":\"2017-04-14\",\"ismale\":false}";
Person p = mapper.readValue(str, Person.class);
System.out.println(p);

/**
* json转为map
*/
Map<String, Object> map = mapper.readValue(str, Map.class);
System.out.println(map);

str = "[{\"id\":1,\"name\":\"略略\",\"birthday\":\"2017-04-14\",\"ismale\":false},{\"id\":2,\"name\":\"哈哈\",\"birthday\":\"2017-04-14\",\"ismale\":false}]";

/**
* json转换成List<LinkedHashMap<K, V>>集合
*
* 注意:
* 这里可与i转换成List<Object> 但是不能转换成具体的类
* 解决:
* 可以先转化为Person[] 数组,然后再转化为List<Person>
*/

// List<Object> ps = mapper.readValue(str, List.class);
// for (Object obj : ps) {
// System.out.println(obj);
// }
List<Map<String, Object>> list = mapper.readValue(str, List.class);
for (Map<String, Object> ms : list) {
System.out.println(ms);
Set<String> keySet = ms.keySet();
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + "--" + ms.get(key));
}
}

Person[] ps = mapper.readValue(str, Person[].class);
for (Person person : ps) {
System.out.println(person.toString());
}
}

/**
* json与xml的相互转换
*/

}

时间: 2024-08-03 13:40:03

jackson简单使用案例的相关文章

_00019 Storm的体系结构介绍以及Storm入门案例(官网上的简单Java案例)

博文作者:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # Storm

【初学菜鸟作--邮件服务的简单配置案例】

邮件服务器的配置以及使用 实验一:                    实验目的:简单搭建出邮件服务器并测试其可用性                    实验环境:DNS服务器一台,安装有Portfix的邮件服务器一台 实验步骤: 一.邮件的发送(SMTP) 1.在邮件服务器配置主机名,ip,并安装portfix并启动 [[email protected]~]# tail -2 /etc/sysconfig/network HOSTNAME=mail.tarena.com   [[email

Sharepoint构建轻量型应用之InfoPath的简单应用案例!

1.   很遗憾,在office 2016 版本中已经将表单功能移除,office 2013 版本已经成了infopath 绝唱,所以我们必须安装office 2013 版本的office Professional plus来完成我们的表单组件安装: 2.   点开infopath Deisgner,我们可以看到可以创建的组件: 3.   这里我们可以创建多种表单,我们这次做一个简单的案例,建立一个标准的空白表单后点击设计后进入到相应的表单设计界面,我们先设计好整个页面的布局: 4.   基于简

jquery,tree无限级树形菜单+简单实用案例

jquery,tree无限级树形菜单+简单实用案例 我在项目中用到产品类别的树形.各种地方都要用. 我就封装起来,方便以后调用. 记录下来,希望给新手们提供帮助.要记得导入jquery.js  tree.js 哦 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri=&quo

Jackson简单应用

Jackson官网 http://wiki.fasterxml.com/Jackson下载 https://github.com/FasterXML/jackson-annotations/wiki 本文代码下载 https://pan.baidu.com/s/1dEHqPlZ 本文介绍Jackson简单应用,希望能对大家有用,操作流程如下: 第一步:创建Maven项目,配置pom.xml. <dependencies> <!-- Jackson包 --> <dependen

springcloud+eureka简单入门案例

springcloud+eureka简单入门案例 一.服务提供者 直接提供服务,入门案例没有特别要设置的地方,注意下端口,由于要启动多个服务,可能会冲突 配置文件(src/main/resources/application.yml) server: port: 8000 二.服务消费者 服务消费者的依赖在这个单独的demo中其实可有可无,亲测不添加,也可以实现demo服务提供能 三.服务消费者启动类里注入RestTemplate,用于调用远程服务 import org.springframew

join连接的五种方式的简单使用案例(Inner join,Left join,Right join

1.内连接Inner join 内连接是基于连接谓词将俩张表(如A和B)的列组合到一起产生新的结果表 ,在表中存在至少一个匹配时,INNER JOIN 关键字返回行.  下面是一个简单的使用案例  以下是运行代码及结果  2.左外连接Left join 左外连接Left join关键字会从左表那里返回所有的行,即使是在右表中没有匹配到的行  下面是一个简单的案例  下面是测试用例  3.右外连接Right join 右外连接关键字Right join会从右表那里返回所有的行,即使是在左表中没有匹

Python 简单爬虫案例

Python 简单爬虫案例 import requests url = "https://www.sogou.com/web" # 封装参数 wd = input('enter a word') param = { 'query':wd } response = requests.get(url=url,params=param) page_text = response.content fileName = wd+'.html' with open(fileName,'wb') as

layout方法的简单使用案例

layout代表着某一个view在父view中的位置,比如 ViewGroup parent = new ViewGroup(); View child = new View(); parent.addView(child) child.layout(l,t,r,b); ps:用new 来初始化对象只是为了方便说明情况 此时child是parent的子View,child.layout(l,t,r,b)就说明了child在parent放置的坐标位置,坐标原点(0,0)就是parent的左上角.