一 使用json-lib包下的JSONObject和JSONArray转换

代码如下:

package com.test.test;

import java.util.ArrayList;
import java.util.List; import com.cn.entity.User; import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* JSONObject和JSONArray
* @author sun.kai
* 2016年8月7日
*/
public class TestJsonOne { public static void main(String[] args){
long time1 = System.currentTimeMillis();
// Map<String, Object> param = new HashMap<String,Object>();
// param.put("id", 1);
// param.put("userName", "admin管理员");
// param.put("password", "admin123456");
// param.put("age", 25);
// JSONObject jsonObject = JSONObject.fromObject(param);
// System.out.println(jsonObject);
// JSONArray jsonArray = JSONArray.fromObject(param);
// System.out.println(jsonArray);
List<User> list = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setUserName("admin管理员");
user1.setPassword("admin123456");
user1.setAge(25);
testJsonObject(user1);
list.add(user1);
User user2 = new User();
user2.setId(2);
user2.setUserName("海角七号");
user2.setPassword("海角七号123456");
user2.setAge(26);
list.add(user2);
testJsonArray(list);
long time2 = System.currentTimeMillis();
System.out.println(time2-time1);
}
@SuppressWarnings("static-access")
public static void testJsonObject(User user){
System.out.println("JSONObject测试");
/*
* java对象转换成json对象
*/
JSONObject jsonObject1 = JSONObject.fromObject(user);
/*
* json对象转成字符串
*/
String jsonsString1 = jsonObject1.toString();
System.out.println(jsonObject1);
System.out.println(jsonsString1); String jsonString2 = "{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"}";
/*
* 字符串转成json对象
*/
JSONObject jsonObject2 = JSONObject.fromObject(jsonString2);
/*
* json对象转成java对象
*/
User user2 = (User) jsonObject2.toBean(jsonObject2,User.class);
System.out.println(user2.getUserName());
/*
* 获取json对象中的json对象数组
*/
String jsonString3 = "{\"abc\":[{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"},"
+ "{\"age\":26,\"id\":2,\"password\":\"海角七号123456\",\"userName\":\"海角七号\"}"
+ "]}";
//字符串转成json对象
JSONObject jsonObject3 = JSONObject.fromObject(jsonString3);
//获取json对象中的json对象数组
JSONArray jsonArray = jsonObject3.getJSONArray("abc");
System.out.println(jsonArray.toString());
}
@SuppressWarnings("unchecked")
public static void testJsonArray(List<User> userList){
System.out.println("JSONArray测试");
/*
* java对象列表转换为json对象数组
*/
JSONArray jsonArray1 = JSONArray.fromObject(userList);
/*
* json对象数组转成字符串
*/
String arrayString1 = jsonArray1.toString();
System.out.println(jsonArray1);
System.out.println(arrayString1); String arrayString2 = "[{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"},{\"age\":26,\"id\":2,\"password\":\"海角七号123456\",\"userName\":\"海角七号\"}]";
/*
* 字符串转成json对象数组
*/
JSONArray jsonArray2 = JSONArray.fromObject(arrayString2);
/*
* json对象数组转成java对象
*/
List<User> users = (List<User>) JSONArray.toCollection(jsonArray2, User.class);
for(User user : users){
System.out.println(user.getUserName());
}
/*
* 循环json对象数组,获取json对象
*/
for(int i = 0;i<jsonArray2.size();i++){
JSONObject jsonObject = jsonArray2.getJSONObject(i);
System.out.println(jsonObject);
}
}
}

User实体类代码:

package com.cn.entity;

import java.io.Serializable;

public class User implements Serializable{
private static final long serialVersionUID = -154635138564326678L; private Integer id; private String userName; private String password; private Integer age; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName == null ? null : userName.trim();
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password == null ? null : password.trim();
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}

执行后的结果:

JSONObject测试
{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"}
{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"}
admin管理员
[{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"},{"age":26,"id":2,"password":"海角七号123456","userName":"海角七号"}]
JSONArray测试
[{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"},{"age":26,"id":2,"password":"海角七号123456","userName":"海角七号"}]
[{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"},{"age":26,"id":2,"password":"海角七号123456","userName":"海角七号"}]
admin管理员
海角七号
{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"}
{"age":26,"id":2,"password":"海角七号123456","userName":"海角七号"}
686

二 使用jackson-databind包下的ObjectMapper

代码如下:

package com.test.test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import com.cn.entity.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* jackson是spring mvc内置的json转换工具
* @author sun.kai
* 2016年8月7日
*/
public class TestJsonTwo {
public static void main(String[] args) throws JsonProcessingException{
long time1 = System.currentTimeMillis();
List<User> users = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setUserName("admin管理员");
user1.setPassword("admin123456");
user1.setAge(25);
users.add(user1);
User user2 = new User();
user2.setId(2);
user2.setUserName("海角七号");
user2.setPassword("海角七号123456");
user2.setAge(26);
users.add(user2);
try {
testObjectMapper(users);
} catch (IOException e) {
e.printStackTrace();
}
long time2 = System.currentTimeMillis();
System.out.println(time2-time1);
} public static void testObjectMapper(List<User> users) throws IOException{
ObjectMapper mapper = new ObjectMapper();
/*
* java对象是一个集合
* 转成的字符串是json对象数组
*/
String mapperString1 = mapper.writeValueAsString(users);
System.out.println(mapperString1);
/*
* java对象不是一个集合
* 转成json对象字符串
*/
String mapperString2 = mapper.writeValueAsString(users.get(0));
System.out.println(mapperString2);
/*
* json对象数组字符串转java对象集合
*/
String jsonString1 = "[{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"},{\"age\":26,\"id\":2,\"password\":\"海角七号123456\",\"userName\":\"海角七号\"}]";
User[] userArray = mapper.readValue(jsonString1, User[].class);
List<User> userList = Arrays.asList(userArray);
for (User user : userList) {
System.out.println(user.getUserName());
}
/*
* json对象字符串转java对象
*/
String jsonString2 = "{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"}";
User user = mapper.readValue(jsonString2, User.class);
System.out.println(user.getUserName());
}
}

执行后的结果:

[{"id":1,"userName":"admin管理员","password":"admin123456","age":25},{"id":2,"userName":"海角七号","password":"海角七号123456","age":26}]
{"id":1,"userName":"admin管理员","password":"admin123456","age":25}
admin管理员
海角七号
admin管理员
784

三 使用fastjson

代码如下:

package com.test.test;
import com.cn.entity.User; import java.util.ArrayList;
import java.util.List;
import java.util.Map; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
/**
* fastjson是阿里做的国有开源Java工具包
* @author sun.kai
* 2016年8月7日
*/
public class TestJsonThree { public static void main(String[] args){
long time1 = System.currentTimeMillis();
List<User> users = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setUserName("admin管理员");
user1.setPassword("admin123456");
user1.setAge(25);
users.add(user1);
User user2 = new User();
user2.setId(2);
user2.setUserName("海角七号");
user2.setPassword("海角七号123456");
user2.setAge(26);
users.add(user2);
testFastjson(users);
long time2 = System.currentTimeMillis();
System.out.println(time2-time1);
} @SuppressWarnings("unchecked")
public static void testFastjson(List<User> users){
/*
* java对象是一个集合
* 转成的字符串是json对象数组
*/
String fastjsonString1 = JSON.toJSONString(users);
System.out.println(fastjsonString1);
/*
* java对象不是一个集合
* 转成json对象字符串
*/
String fastjsonString2 = JSON.toJSONString(users.get(0));
System.out.println(fastjsonString2);
/*
* json对象数组字符串转java对象集合
*/
String jsonString1 = "[{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"},{\"age\":26,\"id\":2,\"password\":\"海角七号123456\",\"userName\":\"海角七号\"}]";
List<User> userList = JSON.parseArray(jsonString1, User.class);
for (User user : userList) {
System.out.println(user.getUserName());
}
/*
* json对象数组字符串转Map集合
*/
List<Map<String, Object>> maps = JSON.parseObject(jsonString1,new TypeReference<List<Map<String,Object>>>(){});
System.out.println(maps);
for (Map<String, Object> map : maps) {
System.out.println(map.get("userName"));
}
/*
* json对象字符串转java对象
*/
String jsonString2 = "{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"}";
User user = JSON.parseObject(jsonString2, User.class);
System.out.println(user.getUserName());
/*
* json对象字符串转Map
*/
Map<String, Object> map = JSON.parseObject(jsonString2, Map.class);
System.out.println(map);
System.out.println(map.get("userName"));
}
}

执行结果:

[{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"},{"age":26,"id":2,"password":"海角七号123456","userName":"海角七号"}]
{"age":25,"id":1,"password":"admin123456","userName":"admin管理员"}
admin管理员
海角七号
[{id=1, age=25, userName=admin管理员, password=admin123456}, {id=2, age=26, userName=海角七号, password=海角七号123456}]
admin管理员
海角七号
admin管理员
{id=1, age=25, userName=admin管理员, password=admin123456}
admin管理员
338

四 使用Google的Gson

代码如下:

package com.test.test;
import com.cn.entity.User;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* google的gson
* https://mvnrepository.com/artifact/com.google.code.gson/gson
* @author sun.kai
* 2016年8月7日
*/
public class TestJsonFour {
public static void main(String[] args){
long time1 = System.currentTimeMillis();
List<User> users = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setUserName("admin管理员");
user1.setPassword("admin123456");
user1.setAge(25);
users.add(user1);
User user2 = new User();
user2.setId(2);
user2.setUserName("海角七号");
user2.setPassword("海角七号123456");
user2.setAge(26);
users.add(user2);
testGson(users);
long time2 = System.currentTimeMillis();
System.out.println(time2-time1);
} @SuppressWarnings("unchecked")
public static void testGson(List<User> users){
/*
* 创建Gson对象
*/
Gson gson = new Gson();
/*
* 获得泛型参数的类型
*/
java.lang.reflect.Type type = new TypeToken<List<User>>() {}.getType();
/*
* java对象是一个集合
* 转成的字符串是json对象数组
*/
String gsonString1 = gson.toJson(users);
System.out.println(gsonString1);
/*
* java对象不是一个集合
* 转成json对象字符串
*/
String gsonString2 = gson.toJson(users.get(0));
System.out.println(gsonString2);
/*
* json对象数组字符串转java对象集合
*/
String jsonString1 = "[{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"},{\"age\":26,\"id\":2,\"password\":\"海角七号123456\",\"userName\":\"海角七号\"}]";
List<User> userList = gson.fromJson(jsonString1, type);
for (User user : userList) {
System.out.println(user.getUserName());
}
/*
* json对象数组字符串转Map集合
*/
List<Map<String, Object>> maps = gson.fromJson(jsonString1,new TypeToken<List<Map<String, Object>>>() {}.getType());
System.out.println(maps);
for (Map<String, Object> map : maps) {
System.out.println(map.get("userName"));
}
/*
* json对象字符串转java对象
*/
String jsonString2 = "{\"age\":25,\"id\":1,\"password\":\"admin123456\",\"userName\":\"admin管理员\"}";
User user = gson.fromJson(jsonString2, User.class);
System.out.println(user.getUserName());
/*
* json对象字符串转Map
*/
Map<String, Object> map = gson.fromJson(jsonString2, Map.class);
System.out.println(map);
System.out.println(map.get("userName"));
}
}

执行结果:

[{"id":1,"userName":"admin管理员","password":"admin123456","age":25},{"id":2,"userName":"海角七号","password":"海角七号123456","age":26}]
{"id":1,"userName":"admin管理员","password":"admin123456","age":25}
admin管理员
海角七号
[{age=25.0, id=1.0, password=admin123456, userName=admin管理员}, {age=26.0, id=2.0, password=海角七号123456, userName=海角七号}]
admin管理员
海角七号
admin管理员
{age=25.0, id=1.0, password=admin123456, userName=admin管理员}
admin管理员
336

json对象和java对象的相互转换方法(json-lib、jackson、fastjson、gson)的更多相关文章

  1. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...

  2. JSON数据与Java对象的相互转换

    JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...

  3. JSON串、JSON对象、Java对象的相互转换

    对象类型转换2: com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串.JSON对象,JSON串转成java对象.JSON对象,JSO ...

  4. JSON串、JSON对象、Java对象的相互转换2

    对象类型转换: 1.Java对象-->JSON对象2.Java对象-->JSON字符串 3.JSON对象-->JSON字符串 4.JSON对象-->Java对象 5.JSON字 ...

  5. json字符串与java对象的相互转换(jackson)

    1.java对象转换为json字符串 package com.chichung.json; import com.fasterxml.jackson.core.JsonProcessingExcept ...

  6. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  7. Java中JSON字符串与java对象的互换实例详解(转)

    http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...

  8. 利用JAVA反射机制将JSON数据转换成JAVA对象

    net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转 ...

  9. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  10. json字符串转java对象

    今天遇到一个问题,前端ajax获取到一个javaBean对象,好多方法发ajax请求需要把这个对象再传到后端,后端再根据这个对象进行操作(之前计划传递id,但发现传递id的话,后端多个方法都需要根据i ...

随机推荐

  1. springboot文件上传: 单个文件上传 和 多个文件上传

    单个文件上传 //文件上传统一处理 @RequestMapping(value = "/upload",method=RequestMethod.POST) @ResponseBo ...

  2. Oracle 安装教程图解

    一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地址: http://www.ora ...

  3. hive数据仓库建设

    hive数据仓库建设 1.设计原生日志表 原生日志表用来存放上报的原始日志,数据经过清洗加工后会进入到各个日志表中. 1.1 创建数据库 #创建数据库 $hive>create database ...

  4. CAD出现向程序发送命令时出现问题提示解决方法分享

    大家有没有遇到在使用cad打开图纸的时候提示向程序发送命令时出现错误的情况呢,如果你在使用cad的时候出现了这个提示,是由于软件的兼容性出现了问题,那么该怎么办呢,下面小编就给大家带来cad打开图纸提 ...

  5. *205. Isomorphic Strings (string & map idea)

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  6. 【PHP 模板引擎】Prototype 原型版发布!

    在文章的开头,首先要向一直关注我的人说声抱歉!因为原本是打算在前端框架5.0发布之后,就立马完成 PHP 模板引擎的初版.但我没能做到,而且一直拖到了15年元旦才完成,有很严重的拖延症我很惭愧,再次抱 ...

  7. cocos2d-x推断sprite点击

    我们经常须要推断用户的点击操作是否落于某个sprite之上,进而让这个sprite做出响应. 可是假设我们通过继承CCSprite类来实现自己的Sprite类的时候,产生的视图尺寸会充满屏幕.多个Sp ...

  8. 后缀数组入门(二)——Height数组与LCP

    前言 看这篇博客前,先去了解一下后缀数组的基本操作吧:后缀数组入门(一)--后缀排序. 这篇博客的内容,主要建立于后缀排序的基础之上,进一步研究一个\(Height\)数组以及如何求\(LCP\). ...

  9. 1.1 NBU基本概念

    1.1 NBU基本概念 1) Policy(备份策略) 备份策略定义一台或几台服务器的备份方法.它包括哪些服务器需要备份.备份哪些目录或文件.在什么时间备份.采用什么方式进行备份等.配置NBU主要指定 ...

  10. P1089 津津的储蓄计划

    题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在 ...