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 ...
随机推荐
- 学习smail注入遇到的坑
1.将需要被反编译的apk包解开之后,找到MainActivity,然后在OnCreate中添加需要加入注入的smail代码: Java代码: /** * 获取Android id * * @para ...
- PIE 阻断回溯——Cut
PIE(Prolog Inference Engine)通常是搜索所有的解.举个例子, 当然dialog窗口中一开始调用 run. 只会显示一个解(虽然事实上会得到两个解),在前面加上 X=1,就可以 ...
- 安卓用canvas画曲线图
1.新建一个常变量类Constant.java package com.rain.db; import android.graphics.Point; public class Constant { ...
- ios GCD的使用及封装
实现代码: CGDHelper /* * Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. * 系统要求:iOS4.0以上. */ #import & ...
- Git 的版本库创建和修改
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...
- Hive 常用函数
参考地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 1. parse_url(url, partToExt ...
- 用border做一个移动端常见的返回按钮
第一步 .hs1{ float: left; .mt(.25rem); .ml(.12rem); width: .3rem; height: .3rem; border-top: 2px solid ...
- Activiti(工作流)学习资源总结
刚进公司第一个项目就是oa项目,不会activiti,只得自学,途中搜集到的activiti学习资源总结 1.activiti初体验 http://blog.csdn.net/bluejoe2000/ ...
- 无法启动T-SQL调试。未能连接到计算机"."。这是在主机名解析时通常出现的暂时错误……
今天在按在SSMS中,按F11进行断点调试时,弹出错误:"无法启动T-SQL调试.未能连接到计算器".".这是在主机名解析时通常出现的暂时错误--", 如下图: ...
- 12C RMAN 备份参考
12C引进了pdb的概念,使得rman的恢复相对来说复杂了一些,这里对pdb的常规备份和恢复进行了简单测试,供大家参考 1.cdb启动和pdb关系测试 [oracle@xifenfei tmp]$ s ...