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 ...
随机推荐
- hdu 2829 Lawrence(斜率优化DP)
题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...
- 圆形图片CustomShapeImageView
第三方控件 [GitHub的源码下载] (https://github.com/MostafaGazar/CustomShapeImageView) 1:依赖包 dependencies { ... ...
- C++虚成员函数表vtable
介绍一下多态是如何实现的,关于如何实现多态,对于程序设计人员来说即使不知道也是完全没有关系的,但是对于加深对多态的理解具有重要意义,故而在此节中稍微阐述一下多态的实现机制. 在C++中通过虚成员函数表 ...
- 非root用户搭建hadoop伪分布式
0.安装软件列表 jdk-7u25-linux-x64.tar.gz hadoop-2.5.0.tar.gz hadoop-native-64-2.5.0.tar 1.准备Linux环境(root ...
- checkbox:获取所有已选中的值
/**获取选中的checkbox值*/ function getChecked(){ var ids = ""; $("input:checkbox[name='id'] ...
- C++中Map常见用法以及按照value排序
今天做一个简单的算法题,居然用了1个小时,STL unordered_map用多了,没想到map这次派上了用场,这里记录一下: 算法题为 给一个字符串例如 abaaba,每连续两个字符组成一个子串 ...
- CSS兼容的一些问题
DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV+CSS设计的网页,就应该更注意IE6 ...
- 微信小程序入门——Mustache语法学习
微信小程序中用到了大量Mustache语法,特发此文学习一下 1.简单的变量调换:{{name}} 1 var data = { "name": "Willy" ...
- 版本控制器:SVN
版本控制器:SVN 开发中的实际问题 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流--需求之一:备份! 这个项目中需要一个很复杂的功 ...
- zoj 1586 QS Network
最小生成树,刚刚学了Prim算法. 对每条边变的权值进行预处理,c[i][j] = c[i][j] + p[i] + p[j] 其中c[i][j]为输入的权值,p[i],p[j]为连接这两个节点所需的 ...