最近需要解析json数据,以前用json-lib觉得还是可以的,就是有时候不是很方便,然后使用了以下jackson json
结果发现真的很方便。
我需要将list对象转化成json对象,也需要将json 数组转化成List对象。
jackson json 官方地址:http://jackson.codehaus.org/
jackson json 有三种方式转换json数据的操作,
流模式,树模式,数据绑定模式。分别用于不同的环境下,对于我的需求数据绑定模式很简单就可以实现。
user对象代码:
package jackson; import java.io.Serializable; /** * * @author alaric * */ public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private Integer id; private String username; private String password; private Integer sex; private Integer age; private String brithday; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getBrithday() { return brithday; } public void setBrithday(String brithday) { this.brithday = brithday; } }
result对象代码:
package jackson; import java.io.Serializable; import java.util.List; public class Result implements Serializable { /** * */ private static final long serialVersionUID = 9121346318498657366L; private Integer msgCode; private String message; private List<User> list; public Integer getMsgCode() { return msgCode; } public void setMsgCode(Integer msgCode) { this.msgCode = msgCode; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } @Override public String toString() { return "{msgCode:"+msgCode+" message:"+message+" list:"+list.toString()+"}"; } }
测试代码:
package jackson; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JacksonTest { public static Result json2Obj(String json){ try { ObjectMapper mapper = new ObjectMapper(); Result result = mapper.readValue(json, Result.class); return result; } catch (JsonParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JsonMappingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static String obj2Json(Result result){ try { ObjectMapper mapper= new ObjectMapper(); String json = mapper.writeValueAsString(result); return json ; } catch (JsonGenerationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JsonMappingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static Result getData(){ Result result = new Result(); result.setMessage("请求成功"); result.setMsgCode(1); List<User> list = new ArrayList<>(); User user1= new User(); user1.setAge(25); user1.setBrithday("1986-06-26"); user1.setId(1); user1.setPassword("3424242"); user1.setSex(2); user1.setUsername("zhangsan"); list.add(user1); result.setMessage("请求成功"); result.setMsgCode(1); User user2= new User(); user2.setAge(25); user2.setBrithday("1986-06-26"); user2.setId(1); user2.setPassword("3424242"); user2.setSex(2); user2.setUsername("lisi"); list.add(user2); result.setList(list); return result; } public static void main(String[] args) { Result result = getData(); String json = obj2Json(result); System.out.println(json); result = json2Obj(json); List <User> list = result.getList(); for(User user:list){ System.out.println(user.getUsername()); } System.out.println(result.toString()); } }
相关推荐
《让Jackson JSON生成的数据包含的中文以unicode方式编码》一文的配套代码。文章地址:http://blog.csdn.net/chaijunkun/article/details/8257209
Jackson为Java对象和Json的转换提供了有效的手段,是Web开发不可缺少的工具
对 jackson json 进行了封装,可以实现 string->json 的互转,包括简单对象的互转和复杂对象的互转
(1)Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 (2)相比json-lib框架,Jackson所依赖的jar包较少,只需下载:jackson-all-1.6.*.jar ~ jackson-all-1.8.0.jar 任何...
相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。 一、准备工作 1、 下载依赖库jar包 Jackson的jar all下载地址:...
json字符串实体bean或者List互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢
基准测试-Protcol Buffers 3 vs Jackson JSON 这是Jackson(w / Afterburner)与协议缓冲区版本3之间性能和大小的简单比较。 我遇到将两者进行了比较,结果显示PB的性能较差,在某些测试中速度慢了近2倍。 我最初...
jsonschema2pojo从JSON模式(或示例JSON)生成Java类型,并可以注释这些类型以便与Jackson 1.x,Jackson 2.x或Gson进行数据绑定。 注意:在0.5.1和1.0.0之间存在重大变化。 检查。 1.0.0 Alpha,Beta和最终版本中...
通常来说,我们在日常开发中使用的是第3种方式,有时为了简便也会使用第2种方式,比如你要从一个很大的Json对象中只读取那么一两个字段的时候,采用databind方式显得有些重,JsonNode反而更简单。 作者:无知者云 ...
jackson-databind基于Jackson核心库构建,以简单易用和高性能著称,是目前最流行的JSON库之一。 jackson-databind的主要功能有: 1. ObjectMapper:jackson-databind的核心类,用于转换Java对象和JSON。使用简单,一般就一...
说明:本篇讲的是Jackson的详细用法,Jackson工具类在文章最后,直接复制粘贴即可使用。 Jackson是公司中必用的组件之一,常用的还用阿里的Fastjson,但是由于一些原因bug与漏洞是在是太多,在注重安全的公司直接被...
gson,fastjson,jackson的简单使用
Java和JSON-使用ObjectMapper的Jackson示例 该存储库包含博客文章中使用的代码示例。 单击链接以获取有关示例的所有信息。 内容 该代码包含以下示例,所有这些示例均在同一JUnit测试中,您可以实际看到期望的输出...
在线 JSON 转 POJO ,超简单实用.zip,Generate Java types from JSON or JSON Schema and annotates those types for data-binding with Jackson, Gson, etc
程序化 JSON 视图在使用 Jackson 序列化对象时,是否需要以编程方式包含或排除字段? 好吧,如果你有那么你现在可能知道这是非常困难的。 Jackson 本质上是非常声明式的(所有内容的注释!),因此以编程方式执行...
Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
java有很多种处理json格式数据的框架,包括Gson,fastJson,Jackson,Json-lib,Json2014,都是源码,通过http请求获取对应的json,然后通过bean转化成对象。Jackson是最麻烦的,要使用ObjectMapper mapper。Gson和...
Jackson是一个Java用来处理json格式数据的类库,性能非常好,使用非常简单。包含四个jar包:jackson-annotations-2.2.2.jar, jackson-core-2.2.2.jar, jackson-databind-2.2.2.jar, jackson-dataformat-xml-2.2.2...
对于简单的情况,您当然不需要此库,您可以仅使用JSON.parse和JSON.stringify来序列化/反序列化JSON。 使用jackson-js ,您可以使用装饰器(例如@JsonProperty() , @JsonFormat() , @JsonIgnore()轻松地操作...