json 与entity/list/map的转换
一 json -> entity
User.java
package com.xxx.hotel.train.json.json2entity; import java.io.Serializable; /** * @author balfish * @date 15-7-22 */ public class User implements Serializable { private static final long serialVersionUID = 5483047693755054496L; private String username; private String password; 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; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
Json2EntityTest.java
package com.xxx.hotel.train.json.json2entity; import net.sf.json.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; /** * @author balfish * @date 15-7-22 */ public class Json2EntityTest { // json转化为entity,list和map同理,此处不作累述 private static ObjectMapper objectMapper = null; public static void main(String[] args) throws Exception{ objectMapper = new ObjectMapper(); writeJson2Entity(); } private static void writeJson2Entity() throws Exception { String json = "{ \"username\":\"balfish\" , \"password\":\"balfish\"}"; System.out.println(objectMapper.readValue(json, User.class)); JSONObject jsonObject = JSONObject.fromObject(json); System.out.println(jsonObject); } }
二 entity -> json
User.java
package com.xxx.hotel.train.json.entity2json; import java.io.Serializable; /** * @author balfish * @date 15-7-22 */ public class User implements Serializable { private static final long serialVersionUID = 359755144270845410L; private String username; private String password; private Car car; public User(String username, String password, Car car) { this.username = username; this.password = password; this.car = car; } 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 Car getCar() { return car; } public void setCar(Car car) { this.car = car; } @Override public String toString() { return "User{" + "car=" + car + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
Car.java
package com.xxx.hotel.train.json.entity2json; import java.io.Serializable; /** * @author balfish * @date 15-7-22 */ public class Car implements Serializable { private static final long serialVersionUID = -1013056738822619070L; private String color; private String country; public Car(String color, String country) { this.color = color; this.country = country; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { return "Car{" + "color='" + color + '\'' + ", country='" + country + '\'' + '}'; } }
Entity2JsonTest.java
package com.xxx.hotel.train.json.entity2json; import java.io.IOException; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.google.common.collect.Maps; /** * @author balfish * @date 15-7-22 */ public class Entity2JsonTest { private static final Logger LOGGER = LoggerFactory.getLogger(Entity2JsonTest.class); private static ObjectMapper objectMapper = null; private static User user = null; private static void writeEntity2Json() throws IOException { /** * 小心 objectMapper.writeValue(System.out, user); 这个方法只会打印一次结果 因为在这个重载方法中在向控制台进行重定向以后会有一个流关闭的过程,那么将无法继续写入 所以慎用 */ System.out.println("用objectMapper的方法......(entity->json)"); System.out.println(objectMapper.writeValueAsString(user)); } private static void writeList2Json() throws IOException { System.out.println("用objectMapper的方法......(list->json)"); List<User> userList = Lists.newArrayList(); userList.add(user); User user = new User("sam", "sam", new Car("green", "England")); userList.add(user); System.out.println(objectMapper.writeValueAsString(userList)); System.out.println("用JsonArray的方法......(list->json)"); List<Object> list = Lists.newArrayList(); list.add(1); list.add(true); list.add('j'); list.add(new char[] { 'j', 's', 'o', 'n' }); list.add(null); list.add("json"); list.add(new String[] { "json", "-", "lib" }); System.out.println(JSONArray.fromObject(list)); } private static void writeMap2Json() throws IOException { /** * objectMapper.writeValue(new File("/home/balfish/jsonmap.txt"), stringObjectMap); * 如上,wtiteValue有很多重载方法,可以根据需要选择 */ System.out.println("用objectMapper的方法......(map->json)"); Map<String, Object> stringObjectMap = Maps.newLinkedHashMap(); stringObjectMap.put("username", user.getUsername()); stringObjectMap.put("password", user.getPassword()); stringObjectMap.put("user", user); System.out.println(objectMapper.writeValueAsString(stringObjectMap)); /** * 这里的map如果key不是string的话,会报错如下 Exception in thread "main" net.sf.json.JSONException: * java.lang.ClassCastException: JSON keys must be strings. */ System.out.println("用JSONObject的方法......(map->json)"); Map<String, Object> map = Maps.newLinkedHashMap(); map.put("1", "Beijing"); map.put("2", "Shanghai"); /** * JSONObject的fromObject方法 {"1":"Beijing","2":"Shanghai"} * JSONArray 的fromObject方法 [{"1":"Beijing","2":"Shanghai"}] * 区别目前来看在于那个中括号 */ System.out.println(JSONObject.fromObject(map)); } public static void main(String[] args) { user = new User("balfish", "balfish", new Car("red", "China")); objectMapper = new ObjectMapper(); try { writeEntity2Json(); writeList2Json(); writeMap2Json(); } catch (IOException e) { LOGGER.error("(entity/list/map)转换成json时出错", e); } } }
三 需要的额外maven依赖包
<!-- json-lib --> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <!-- Jackson mapper --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency>
json 与entity/list/map的转换的更多相关文章
- 用jackson包实现json、对象、Map之间的转换
jackson API的使用 用jackson包实现json.对象.Map之间的转换
- java json与map互相转换(二)
java json与map互相转换(二) CreationTime--2018年7月16日15点09分 Author:Marydon 1.准备工作 所需jar包: commons-beanutil ...
- java json与map互相转换(一)
java json与map互相转换(一) CreationTime--2018年7月16日 Author:Marydon 1.准备工作 所需jar包:json-20180130.jar impor ...
- java中 json和bean list map之间的互相转换总结
JSON 与 对象 .集合 之间的转换 JSON字符串和java对象的互转[json-lib] 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级 ...
- 在js中将map对象转换成json 和 js对cookie的操作
在js中将map对象转换成json //msp转objectlet obj= Object.create(null); for (let[k,v] of map) { obj[k] = v; }//o ...
- C++实现json字符串与map的转换
开源资源库 jsoncpp-src-0.5.0.tar.gz:https://sourceforge.net/projects/jsoncpp/ jsoncpp-master.ziphttps://g ...
- ES6中Json、String、Map、Object之间的转换
/** *字符串转json * */ static stringToJson(data){ return JSON.parse(data); } /** *json转字符串 */ static jso ...
- Json,String,Map之间的转换
前提是String的格式是map或json类型的 String 转Json JSONObject jasonObject = JSONObject.fromObject(str); String 转 ...
- fastjson将json字符串转化成map的五种方法
package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObj ...
随机推荐
- Hadoop集群出现no data node to stop的解决方案
问题描述: 今天stop hadoop集群的时候出现no datanode to stop ,寻找解决方案,并不是网上资料所说的什么DFS Used .Non DFS Used等于0 .所有的节点都是 ...
- Elasticsearch 快照和恢复
摘要: 在Elasticsearch中的可以创建快照,它创建单个索引或整个群集到一个远程的存储库中.在以前的版本中,系统只支持共享存储的快照创建,最新的版本可以通过插件支持更多的方式.在执行快照操作前 ...
- url地址数据转换成json数据格式
var urlToJson = function(){ var ret = {}; window.location.search.substr(1).replace(/(\w+)=(\w+)/ig, ...
- github本地库及clone常用命令
新建本地库 1. cd d: 2. mkdir git 3. cd git 4. git init 5. git remote add origin git@github.com:swportal/ ...
- .netER的未来路,关于基础是否重要和应该自己手写代码吗?
http://www.cnblogs.com/onepiece_wang/p/5558341.html#!comments 引用"基础知识的学习,一开始可能是背书,但是在后续若干年的工作过程 ...
- JWT 多网站单点登录,放弃session
多个网站之间的登录信息共享, 基于cookie - session的登录认证方式跨域等比较复杂.采用基于算法的认证方式, JWT(json web token)的方式. --------------- ...
- 安装aptana(1)
以前在myeclipse8.5上装了aptana,现在用myeclipse2014了,但是用原来的方法没有安装上,网上搜了下,发现都是老的方法,对新版的myeclipse已经不适用了,下面是转载的一篇 ...
- Python编程工具IDLE快捷键
IDLE编辑器快捷键 自动补全代码 Alt+/(查找编辑器内已经写过的代码来补全) 补全提示 Ctrl+Shift+space(默认与输入法冲突,修改之) (方 ...
- 基于HTML5 的WebSql本地设备数据库
HTML5 的 Web SQL Database 用本地和会话存储实现简单的对象持久化,对繁琐的关系数据进行处理. 在 W3C 的 Web SQL Database 规范中(参照 介绍)有这样的描述: ...
- Jmeter组件介绍
测试计划:一次性能测试的相关功能用例集. 测试计划--线程组添加: