`

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-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    java转json串的几种方法

    以下我们将详细探讨Java中将对象转换为JSON字符串的三种方法,这里使用的是阿里巴巴的Fastjson库,它是一个高性能的JSON库,提供了丰富的API来处理JSON与Java对象之间的转换。 1. **将Java对象转成JSON串** 当我们...

    asp字符串转json对象类

    对象的属性通常通过"obj.property"的方式访问,但根据描述,这里的JSON对象转换后,其属性需要通过"obj("name")"的方式访问,这意味着转换后的对象不是标准的VBScript Collection或Dictionary对象,而是一种自定义的...

    java实现Xml与json之间的相互转换操作示例

    java实现Xml与json相互转换的必要性:在Web开发中,我们经常需要在前后端之间进行数据的交换,由于后端和前端使用的数据格式可能不同,这时候就需要实现数据格式的转换,尤其是在使用Java作为后端开发语言时,如何将...

    JS中Json对象

    // 将JavaScript对象转换为JSON字符串 var jsonString = JSON.stringify(person); console.log(jsonString); // 将JSON字符串转换回JavaScript对象 var parsedPerson = JSON.parse(jsonString); console.log...

    java实现http请求以及解析json与java对象转换 项目源代码实例

    具体到这个"java实现http请求以及解析json与java对象转换"项目,你可以期待以下几个关键知识点: 1. **HTTP请求**: - GET请求:获取服务器上的资源。 - POST请求:向服务器提交数据,常用于表单提交或API接口...

    JSON--List集合转换成JSON对象详解

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...掌握了这些知识点,对于进行Web开发和数据交换的开发者来说,能够更加高效地处理数据结构与JSON之间的转换问题。

    Json数据转换成对象

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输,因为它易于读写,同时也被人类和机器所理解。本文将深入探讨如何将JSON数据转换为对象,这是一个在Java...

    将数组转换成JSON对象

    这段代码展示了如何使用一个自定义的`toJSON`函数来将JavaScript中的数组或对象转换为JSON字符串。这里使用了jQuery的`$.each`方法遍历对象的所有键值对,并根据类型进行相应的处理,如对字符串类型的值进行引号包围...

    cJSON库(json格式字符串进行转化)

    - cJSON_Print()和cJSON_PrintUnformatted():将JSON对象转换为字符串。前者会进行格式化输出,后者则是原始输出。 - cJSON_CreateXXX()系列函数:用于创建各种类型的JSON对象。 - cJSON_GetObjectItem():根据键...

    C++解析json字符串

    例如,`j.dump()`可以将JSON对象转换为字符串。 8. **自定义类型与JSON**:nlohmann/json库允许你自定义类型与JSON的转换规则,通过重载`to_json()`和`from_json()`函数,使得自定义类型可以直接与JSON对象交互。 ...

    springmvc中json转换的jar

    `ObjectMapper`类在这个库中被完整实现,它提供了丰富的API来处理对象与JSON之间的转换,例如`readValue()`和`writeValueAsString()`方法,分别用于从JSON字符串反序列化对象和将Java对象序列化成JSON字符串。...

    json和对象相互转换

    ##### 4.2 将Java对象转换为JSON字符串 ```java import com.fasterxml.jackson.databind.ObjectMapper; public class JavaObjectToJson { public static void main(String[] args) { ObjectMapper objectMapper ...

    将web Form 的数据转化成json字符串及json对象进行处理的JS

    4. **转换为JSON字符串**:使用JavaScript内置的`JSON.stringify`方法将构建好的对象转换为JSON字符串。 5. **处理JSON对象**:如果需要在客户端进一步处理JSON数据,可以将其解析为JavaScript对象,使用`JSON....

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

    下面我们将详细探讨几种常见的将前端对象转换为JSON并使用`JSON.stringify()`的方法。 1. **直接使用`JSON.stringify()`** `JSON.stringify()`是JavaScript内置的函数,用于将一个JavaScript值(对象或数组)转换...

    Delphi中JSon SuperObject 使用数据集与JSON对象互转.docx

    * 最后,我们需要将 JSON 对象转换为数据集,这可以使用 ImportDataFromJSon 方法来实现。 在使用 Json SuperObject 将数据集与 JSON 对象互转时,我们还需要注意 JSON 对象的格式。在 Delphi 中,JSON 对象的格式...

    DataSet类型数据转换成Json串

    对于使用C#语言进行开发的程序员来说,将DataSet类型的数据转换为JSON字符串是处理数据库查询结果的一个常见操作。下面,我们将深入探讨这一过程中的关键技术点。 ### 一、理解DataSet与JSON #### DataSet `...

    json工具 可格式化json串

    3. **JSON与JavaScript对象的关系**:在JavaScript中,JSON字符串可以通过`JSON.parse()`方法转化为JavaScript对象,反之,JavaScript对象也可以通过`JSON.stringify()`方法转化为JSON字符串。 4. **使用"JsonView...

    json串转换 列子 以及jar

    这可以通过以下几种方式实现: - 将JAR文件复制到项目的lib目录。 - 在Maven或Gradle构建文件中声明依赖,自动下载并管理JAR文件。 - 使用IDE如IntelliJ IDEA或Eclipse的依赖管理功能。 例如,对于Maven项目,可以...

    java解析Json字符串

    使用Gson,你可以将Java对象转换为对应的JSON字符串,反之亦然。例如,如果你有一个User类,你可以轻松地将其对象转换为Json字符串: ```java import com.google.gson.Gson; class User { String name; int age;...

Global site tag (gtag.js) - Google Analytics