java jackson 生成_Java Jackson读取Json以及使用Bean生成Json

本文介绍了如何在Java中使用Jackson库来解析JSON数据和将JavaBean对象转换为JSON。首先展示了环境配置,包括Maven依赖。接着通过示例代码详细解释了如何解析JSON数据,包括获取JSON节点的值、处理数组和嵌套对象。然后,文章演示了如何将JavaBean实例转换为JSON字符串,包括设置Bean属性和使用`ObjectMapper`的`writeValueAsString`方法。
摘要由CSDN通过智能技术生成

一.环境配置

JavaSE版本:1.8

Maven配置如下:

UTF-8

2.8.1

junit

junit

3.8.1

test

com.fasterxml.jackson.core

jackson-core

${jackson-version}

com.fasterxml.jackson.core

jackson-databind

${jackson-version}

com.fasterxml.jackson.core

jackson-annotations

${jackson-version}

解析JSON

要解析的JSON数据如下:

{

name:"韩超",

age:18,

code:1507030123,

hobbies:["football","game","baskerball"]

details:

{

birthday:869760000,

extar:[1321,"hahaha","zzz421"]

}

}

解析示例代码

@Test

public void testParseJson() {

//原数据

String data="{" +

" \"name\":\"韩超\"," +

" \"age\":18," +

" \"code\":1507030123," +

" \"hobbies\":[\"football\",\"game\",\"baskerball\"]," +

" \"details\":" +

" {" +

" \"birthday\":869760000," +

" \"extar\":[1321,\"hahaha\",\"zzz421\"]" +

" }" +

"}";

//创建一个ObjectMapper对象

ObjectMapper objectMapper=new ObjectMapper();

//读取json数据,返回一个JsonNode对象指向根节点

try {

JsonNode jsonNode=objectMapper.readTree(data);

//利用JsonNode的path方法获取子节点,path方法的返回值也是JsonNode

JsonNode subNode=jsonNode.path("details");//得到details节点

//JsonNode对象的asInt(),asText()等方法用于获取值

System.out.println(jsonNode.path("name").asText());//返回字符串,韩超

System.out.println(jsonNode.path("age").asInt());//返回整形数据,18

System.out.println(jsonNode.path("code").asLong());//返回长整型数据,1507030123

//对于数组,可以使用size方法获取数组长度,get(index)获取索取为index的值

for(int i=0;i

System.out.println(jsonNode.path("hobbies").get(i).asText());//输出hobbies对应的数组

//获取details.birthday

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm");

sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));

System.out.println(sdf.format(new Date(subNode.path("birthday").asLong()*1000)));

for(int i=0;i

System.out.println(subNode.path("extar").get(i).asText());//输出details.extar对应的数组

} catch (JsonProcessingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

JavaBean转换成JSON

Bean示例

public class MyBean implements Serializable{

private String name;

private Integer age;

private Long code;

private String[] hobbies;

private Map details;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public Long getCode() {

return code;

}

public void setCode(Long code) {

this.code = code;

}

public String[] getHobbies() {

return hobbies;

}

public void setHobbies(String[] hobbies) {

this.hobbies = hobbies;

}

public Map getDetails() {

return details;

}

public void setDetails(Map details) {

this.details = details;

}

}

生成JSON代码示例

@Test

public void testJsonBuilder() {

//写入数据

MyBean myBean=new MyBean();

myBean.setAge(18);

myBean.setName("韩超");

String[] hobbies= {"game","it"};

Object[] extra= {"1212",233,"haha","hdfa31"};

Map map=new HashMap();

map.put("birthday",869760000);

map.put("extra", extra);

myBean.setDetails(map);

ObjectMapper objectMapper=new ObjectMapper();

try {

//利用writeValueAsString方法将一个Bean转换成Json数据

System.out.println(objectMapper.writeValueAsString(myBean));

//如果要生成json数组,只需使用List对象存储一个个Bean就行了

} catch (JsonProcessingException e) {

e.printStackTrace();

}

}

输出结果

17cd62b6457c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值