`

json串与对象之间转换的几种实现方式

    博客分类:
  • java
 
阅读更多
这里使用了gson,fastjson,jackson,json等工具实现了json串与对象之间的相互转换。

主要实现了bean到json串,json串到bean,json串到List的转换。

公共Bean:User.java
package com.json.bean;

/**
 * 
 * @author yangjianzhou
 *
 * Jan 24, 2015 4:32:26 PM
 * 
 * TODO
 */
public class User {

private String name ; 
	
	private int age ;
	
	private String address ;
	
	public User(String name , int age , String address){
		this.name = name ;
		this.address = address ;
		this.age = age ;
	}
	
	public User(){
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
	
}



GsonUtils.java代码如下:
package com.json.utils;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.json.bean.User;

/**
 * 
 * @author yangjianzhou
 *
 * Jan 24, 2015 3:39:49 PM
 * 
 * Gson的应用
 * 对象与json之间的转换
 */
public class GsonUtils {

	/**
	 * 将对象转换为json字符串
	 * @param obj
	 * @return
	 */
	public static String toJson(Object obj) {
		Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
		return gson.toJson(obj);
	}

	/**
	 * 将json字符串转换为对象
	 * @param jsonString
	 * @param type
	 * @return
	 */
	public static <T> T jsonToObject(String jsonString , TypeToken<T> type) {
		Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
		return gson.fromJson(jsonString, type.getType());
	}
	
	/**
	 * 将json字符串转换为对象
	 * @param jsonString
	 * @param clazz
	 * @return
	 */
	public static <T> T jsonToObject(String jsonString , Class<T> clazz) {
		Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
		return gson.fromJson(jsonString, clazz);
	}
	
	public static void main(String[] args) {
		User user = new User("zhangsan",21,"shanghai");
		String jsonStr = toJson(user);
		System.out.println("jsonStr : " +jsonStr);
		user = null ;
		user = jsonToObject(jsonStr,User.class);
        user = null ;
        user = jsonToObject(jsonStr, new TypeToken<User>(){});
        
		List<User> userList = new ArrayList<User>();
		userList.add(new User("zhangsan",21,"shanghai"));
		userList.add(new User("lisi",22,"shanghai"));
		String jsonListStr = toJson(userList);
		userList = null ;
		userList = jsonToObject(jsonListStr , new TypeToken<List<User>>(){});
		
	}
}



运行结果如下:
jsonStr : {"name":"zhangsan","age":21,"address":"shanghai"}
jsonListStr : [{"name":"zhangsan","age":21,"address":"shanghai"},{"name":"lisi","age":22,"address":"shanghai"}]



FastjsonUtils.java代码如下:
package com.json.utils;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.json.bean.User;

/**
 * 
 * @author yangjianzhou
 *
 *         Jan 24, 2015 3:34:34 PM
 * 
 *         fastjson的应用
 *         对象与json之间的转换
 */
public class FastjsonUtils {

	/**
	 * 将对象转换为json
	 * @param obj
	 * @return
	 */
	public static String toJson(Object obj) {
		return JSON.toJSONStringWithDateFormat(obj, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteNullNumberAsZero);
	}

	/**
	 * 将json字符串转换为对象
	 * @param jsonString
	 * @param clazz
	 * @return
	 */
	public static <T> T jsonToObject(String jsonString, Class<T> clazz) {
		return JSON.parseObject(jsonString, clazz);
	}
	
	/**
	 * 将字符串转换为List
	 * @param jsonString
	 * @param clazz
	 * @return
	 */
	public static <T> List<T> jsonToList(String jsonString, Class<T> clazz) {
		return JSON.parseArray(jsonString, clazz);
	}
	
	public static void main(String[] args) {
		User user = new User("zhangsan",21,"shanghai");
		String jsonStr = toJson(user);
		System.out.println("jsonStr : " +jsonStr);
		user = null ; 
		user = jsonToObject(jsonStr, User.class);
		List<User> userList = new ArrayList<User>();
		userList.add(new User("zhangsan",21,"shanghai"));
		userList.add(new User("zhangsan",21,"shanghai"));
		String jsonListStr = toJson(userList);
		System.out.println("jsonListStr : " +jsonListStr);
		userList = null ;
		userList = jsonToList(jsonListStr,User.class);
	}
}



运行结果如下:
jsonStr : {"address":"shanghai","age":21,"name":"zhangsan"}
jsonListStr : [{"address":"shanghai","age":21,"name":"zhangsan"},{"address":"shanghai","age":21,"name":"zhangsan"}]


JacksonUtils.java代码如下:
package com.json.utils;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider;
import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.Impl;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;

import com.json.bean.User;
/**
 * 
 * @author yangjianzhou
 *
 *         Jan 24, 2015 3:51:54 PM
 * 
 *         TODO
 */
public class JacksonUtils {

	static ObjectMapper objectMapper;

	static {
		DefaultSerializerProvider sp = new Impl();
		sp.setNullValueSerializer(NullSerializer.instance);
		objectMapper = new ObjectMapper(null, sp, null);
		objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
	}

	public static String toJson(Object object) throws Exception {
		return objectMapper.writeValueAsString(object);
	}
	
	@SuppressWarnings("unchecked")
	public static <T> T jsonToObject(String jsonString, TypeReference<T> tr) throws IOException {
		return (T) objectMapper.readValue(jsonString, tr);
	}
	
	public static void main(String[] args) throws Exception{
		User user = new User("zhangsan",21,"shanghai");
		String jsonStr = toJson(user);
		System.out.println("jsonStr : " +jsonStr);
		user = null ;
		user = jsonToObject(jsonStr,new TypeReference<User>() {
		});
        user = null ;
        
		List<User> userList = new ArrayList<User>();
		userList.add(new User("zhangsan",21,"shanghai"));
		userList.add(new User("lisi",22,"shanghai"));
		String jsonListStr = toJson(userList);
		userList = null ;
		userList = jsonToObject(jsonListStr , new TypeReference<List<User>>(){});
	}
}



运行结果如下:
jsonStr : {"name":"zhangsan","age":21,"address":"shanghai"}
jsonListStr : [{"name":"zhangsan","age":21,"address":"shanghai"},{"name":"lisi","age":22,"address":"shanghai"}]



JsonlibUtils.java代码如下:
package com.json.utils;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.json.bean.User;

/**
 * 
 * @author yangjianzhou
 *
 * Jan 24, 2015 4:03:03 PM
 * 
 * JSONObject与对象之间的转换
 */
public class JsonlibUtils {

	/**
	 * 转换为json字符串
	 * @param obj
	 * @return
	 */
	public static <T> String toJson(Object obj , Class<T> clazz) {
		if(clazz.isAssignableFrom(List.class)){
			return JSONArray.fromObject(obj).toString();
		}
		return JSONObject.fromObject(obj).toString();
	}
	
	/**
	 * jsonString转换为对象
	 * @param jsonString
	 * @param clazz
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T jsonToObject(String jsonString, Class<T> clazz) {
		JSONObject jsonObject = JSONObject.fromObject(jsonString);
		return (T)JSONObject.toBean(jsonObject, clazz);
	}
	
	/**
	 * jsonString转换为List
	 * @param jsonString
	 * @param clazz
	 * @return
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <T>  List<T> jsonToList(String jsonString , Class<T> clazz) {
		Collection<T> collection = JSONArray.toCollection(JSONArray.fromObject(jsonString), clazz);
		return new ArrayList(collection);
	}
	
	public static void main(String[] args) {
		User user = new User("zhangsan",21,"shanghai");
		String jsonStr = toJson(user , User.class);
		System.out.println("jsonStr : " +jsonStr);
		user = null ;
		user = jsonToObject(jsonStr,User.class);
        
		List<User> userList = new ArrayList<User>();
		userList.add(new User("zhangsan",21,"shanghai"));
		userList.add(new User("lisi",22,"shanghai"));
		String jsonListStr = toJson(userList,List.class);
		System.out.println("jsonListStr : " +jsonListStr);
		userList = null ;
		userList = jsonToList(jsonListStr , User.class);
	}
}



运行结果如下:
jsonStr : {"address":"shanghai","name":"zhangsan","age":21}
jsonListStr : [{"address":"shanghai","name":"zhangsan","age":21},{"address":"shanghai","name":"lisi","age":22}]
分享到:
评论

相关推荐

    这几种方式将前端的 对象转换成json ,再用 Json.stringify(list)

    这几种方式将前端的 对象转换成json ,再用 Json.stringify(list)

    java实现将实体类list集合,转化成geojson字符串

    GeoJSON支持下面这几种几何类型:点、线、面、多点、多线、多面和几何集合。GeoJSON里的特征包含一个几何对象和其他属性,特征集合表示一系列特征。 该工具可以实现通过java代码将任意的实体类数据集合生成GeoJSON...

    json相关jar包.zip

    在前端和后端进行数据传输的时候这种格式也是很受欢迎的,后端返回json格式的字符串,前台使用js中的JSON.parse()方法把JSON字符串解析为json对象,然后进行遍历,供前端使用。 下面进入正题,介绍在JAVA中JSON和...

    javascript中JSON对象与JSON字符串相互转换实例

    主要介绍了javascript中JSON对象与JSON字符串相互转换,实例分析了json对象与字符串常用的几种转换技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Android使用Json与Asp.Net交互(上传/下载数据集)

    Asp.Net服务器端借用Newtonsoft.Json.dll进行直接把对象转换成成Json格式的字符串,或把Json字符串转换成类对象。该dll原本针对JavaScript进行的转换,对其中部分类作出了修改,并重新命名为AndroidConvert类。 注...

    将string解析为json的几种方式小结

    1.比较古老的方法: 代码如下: function strToJson(str){ var ... } 3.IE67不支持的json对象方法: 代码如下: function strToJson(str){ return JSON.parse(str); } 4.jQuery提供的方法: 代码如下: parseJSON: functio

    jsona:从JSON或存储的reduxObject创建简化对象的数据格式化程序,从相同的简化对象创建JSON(符合JSON API规范)

    Jsona通过提供以下解决了这个问题: 从JSON到简化对象的转换器(一些非规范化的结构,很容易代表) 从简化对象到JSON的转换器(符合) 从“ reduxObject”到简化对象的转换器( reduxObject是的结果对象) 注意:本...

    dto:JSON数据传输对象库和助手

    我永远找不到能够让我快速,轻松地使用几种不同方法的解决方案:投影,翻译和合并。 入门 安装 安装很简单,请使用npm进行安装。 现在,这是一个针对节点的项目。 如果我发现有充分的理由在浏览器上使用它,我可能...

    如何处理JSON中的特殊字符

    JSON 是适用于 Ajax 应用程序的一种有效格式,原因是它使 JavaScript 对象和字符串值之间得以快速转换。由于 Ajax 应用程序非常适合将纯文本发送给服务器端程序并对应地接收纯文本,相比不能生成文本的 API,能生成...

    PMJSON:纯Swift JSON编码解码库

    对于如何处理格式错误的数据,有几种不同的选择(例如,是否忽略错误类型的值,以及是否尝试将非字符串值强制转换为字符串,反之亦然),但以下示例将非常严格并抛出错误输入值的错误: struct Address { var ...

    Ajax面试题.docx

    1:什么是ajax?ajax作用是什么?...3:json字符串转换集json对象、json对象转换json字符串 4:ajax几种请求方式?他们的优缺点? 5:什么情况造成跨域? 6:跨域解决方案有哪些? 7:http常见状态码有哪些?

    JSON为什么那样红为什么要用json(另有洞天)

    json是什么,json.org是一种简洁有效的数据载体,是一种用字符串表示复杂js对象的方式,后端好生成,前端0解释。 它的风行和一下几点原因离不开的。 持久化的风潮: persistence是javaEE5引入的重要模块。 php先天...

    sXp-to-json:Touchstone文件到javascript对象的转换库

    :satellite_antenna: 提供用于在JSON对象中转换Touchstone文件的工具的库 描述 该库提供了几种处理Touchstone文件及其数据内容的方法。 您可以实例化s2p类的对象,并将有效的文件路径传递给其构造函数。 对象初始...

    JMdict-Parser:将JMdict XML转换为JSON

    安装npm i -g jmdict-parser关于麦迪克JMdict是日语到X(X是英语,以及其他几种语言)词典,其文件为XML格式。这个怎么运作它只是将JMdict文件读入Javascript对象,然后将该对象写入文件。输出特性JSON文件易于阅读...

    Python的标准模块包json详解

    引言 对于做web开发的人来说,json文本必须要熟知与...其实,只是看仔细其中的数据结构之后,还是可以看出json原格式与Python的几种数据类型之间还是有细微差别的。在这里,先列出两者之间相互转换的对应格式: Pyt

    WorizonJsonRpc:基于 HTTP 的 JSON-RPC 2.0 的 Java 库

    该项目使用库将 java 对象与 json 对象相互转换。 JSON-RPC 2.0 规范 该库实现的大部分规范都可以在上找到。 有一个小组讨论规范和相关问题。 用法 该库旨在通过外观类Rpc 使用。 这个类公开了两种执行 rpc 请求的...

    Java高级程序设计实战教程第五章-Java序列化机制.pptx

    5.2 相关知识 5.2.1 序列化的概念 5.2.2 序列化应用 5.2.3 序列化的几种方式 5.2.4 对象实现机制 Java高级程序设计实战教程第五章-Java序列化机制全文共15页,当前为第3页。 5.2.1 序列化的概念 将在内存中的各种...

    JavaScript数组去重的几种方法

    【3】数组中含对象的去重方式我采用使用JSON.stringify()将对象转换成JSON字符串进行比较的方式。 1.最基础的去重:双重遍历 双重遍历的核心就是依据【1】,通过拿出一个元素和剩下的元素依次比较,如果全部不相等...

    TinyJSON:TinyJSON是用于C#的简单JSON库,力求易于使用

    特征将对象转换为JSON,然后再次返回。 使用反射自动地转储和加载对象图。 支持基元,类,结构,枚举,列表,字典和数组。 支持一维数组,多维数组和锯齿状数组。 解析的数据使用代理变体,可以将其隐式转换为原始...

    jQuery权威指南366页完整版pdf和源码打包

    3.10.3 功能实现 3.10.4 代码分析 3.11 本章小结 第4章 jquery中的事件与应用 4.1 事件机制 4.2 页面载入事件 4.2.1 ready()方法的工作原理 4.2.2 ready()方法的几种相同写法 4.3 绑定事件 ...

Global site tag (gtag.js) - Google Analytics