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 ...
随机推荐
- Java 并发 线程属性
Java 并发 线程属性 @author ixenos 线程优先级 1.每当线程调度器有机会选择新线程时,首先选择具有较高优先级的线程 2.默认情况下,一个线程继承它的父线程的优先级 当在一个运行的线 ...
- [SOJ]统计数字
Description 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小 ...
- Tiny64140之初始化时钟
简介: Tiny6410 时钟逻辑为整个芯片提供了3种时钟分别为FCLK.HCLK.PCLK有三个PLL 分别为APLL.MPLL.EPLL. APLL 专用于CPU MPLL 供AHB(存储 ...
- Scala分号推断
看这样段代码,Scala会把它当作两个语句,x 和 +y,如果想把它作为一个语句,可以把它们放在括号里(x+y) x +y 或者也可以把 + 放在行末,也正因为此,串接类似于 + 这样的中缀操作符的时 ...
- 使用Java注解开发自动生成SQL
使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...
- 自动化辅助工具Firebug和Firepath的安装
1.安装firefox浏览器,点击主菜单,选择“附加组件” 2.搜索Firebug和firepath点击安装 3.安装后点击浏览器的主菜单-web开发者-firebug即可打开 4.或者在页面右键选择 ...
- 2016 ACM Amman Collegiate Programming Contest D Rectangles
Rectangles time limit per test 5 seconds memory limit per test 256 megabytes input standard input ou ...
- linux 文件和目录操作
1 相对路径和绝对路径 (与C++中概念相似) cd /root/cat 绝对路径 cd ../文件名/ 相对路径,指相对某个文件而言的 2 切换目录 cd 当前目录 进入某个目录 pwd 显示当前 ...
- js 循环迭代定时器的执行次数和执行顺序??主要是因为js是单线程
当定时器运行时即使每个迭代中执行的是setTimeout(.., 0),所有的回调函数依然是在循环结束后才会被执行 for语句开始赋值i=1;settimeout语句1000毫秒后把timer函数加入 ...
- swift 学习线路
//从(GCD,动画,通知,KVO..) 到闭包 到单子 再到 promise ,再到 reactive //从可选类型 到可选绑定 ,隐私可选解包 ,动态绑定,nil 聚合运算符 再到可选链 再到S ...