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 ...
随机推荐
- Recursive - leetcode [递归]
经验tips: Recursion is the best friend of tree-related problems. 一是只要遇到字符串的子序列或配准问题首先考虑动态规划DP,二是只要遇到需要 ...
- Chapter 18_0 数学库
从今天起,开始接触Lua的标准库(数学库.table库.字符库.I/O库.操作系统库.调试库). 一路走来,从最基本的变量.函数.迭代器.协同程序到稍微复杂的元表.元方法.环境.模块,以及最后被整蒙了 ...
- Python 学习笔记13:Python + wsgi + django 配置。坑爹的python3和wsgi不兼容的解决
今人不见古时月,今月曾经照古人.生命是如此的美丽与短暂! 学习Python已经两个月了,Python的语法通过做简单的语法题和看Python语法介绍,有了初步的了解.但上班还是要做别的事情,所以感觉学 ...
- removeObjectAtIndex
CGFloat lableW = (baseViewWidth - 2)/3;// dcj20150724,减2是为了解决字体模糊的问题,因为设置了边框. 原因是下面引起的 titleview.lay ...
- uinavigationcontroller uinavigationbar 下方横线去除
#import "QKBaseNavigationController.h" #define fontSize 19 @interface QKBaseNavigationCont ...
- ACdream 1732
input 样例个数T <=10000 每个样例一个n(2<=n<=10^8) output lcm(1,2,...,n)%2^32 Sample Input 5 ...
- javascript初始笔记
1.在html中使用点击事件: <button type="button" onclick="myclick()">click me<butt ...
- Revenge of GCD HDU5019
Description In mathematics, the greatest common divisor (gcd), also known as the greatest common fac ...
- ZS and The Birthday Paradox
ZS and The Birthday Paradox 题目链接:http://codeforces.com/contest/711/problem/E 数学题(Legendre's formula) ...
- 理解Nodejs中的事件轮询机制
我在看<了不起的Nodejs>一书,阻塞与非阻塞IO那一章我来回看了N遍,然后...还是没太看懂..于是我找到了这篇日志,写的是真的有点好啊..潸然泪下.. 原文:http://www.r ...