`

将json字符串转换为对象

 
阅读更多
准备将这几年的工作进行一个系统的总结,会陆续发些东西出来供大家参考。
本文向大家介绍的是一个将json字符串直接转换为对象的方法,这个方法对于处理json字符串有很大的帮助。废话少说,上代码:
package com.cp.utils;  
/** 
 * 	作者:chenpeng  
 *	E-mail:46731706@qq.com  
 * 	创建时间:2012-7-12 下午02:29:57  
 * 	类说明  
 */
public class User {
	private int userId;
	private String userName;
	
	public int getUserId() {
		return userId;
	}
	public void setUserId(int userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	
}

package com.cp.utils;  

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Map;

import org.stringtree.json.JSONReader;



/** 
 * 	作者:chenpeng  
 *	E-mail:46731706@qq.com  
 * 	创建时间:2012-7-12 下午02:16:26  
 * 	类说明  
 */
public class TestUtils {
	
	public static void main(String[] args){
		String data="{\"userId\":1,\"username\":\"cp\"}";
		try {
			jsonDataToObj("com.cp.utils.User", data);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@SuppressWarnings("unchecked")
	public static Object jsonDataToObj(String type, String data) throws Exception {
		
		Class classType = Class.forName(type);
		Object object = classType.newInstance();
		// 获得对象的所有属性
		Field[] fields = classType.getDeclaredFields();
		JSONReader reader = new JSONReader();
		Map jsonData = null;
		jsonData = (Map) reader.read(data);
		int f_size = fields.length;
		for (int i = 0; i < f_size; i++) {// 获取数组中对应的属性
			Field field = fields[i];

			String fieldName = field.getName();
			if(!jsonData.containsKey(fieldName)){
				continue;
			}
			String stringLetter = fieldName.substring(0, 1).toUpperCase();

			// 获得相应属性的setXXX方法名称
			String setName = "set" + stringLetter + fieldName.substring(1);

			// 获取相应的方法
			Method setMethod = classType.getMethod(setName, new Class[] { field.getType() });

			// 调用拷贝对象的setXXX()方法
			if (jsonData.containsKey(fieldName) && (jsonData.get(fieldName)) != null && jsonData.get(fieldName).toString().trim().length() > 0) {
				//对象的声明类型
				Type tp = field.getType();
				if (tp.toString().equals("interface java.util.List")) {
					ArrayList<String> list = new ArrayList<String>();
					list.add((String) jsonData.get(fieldName));
					setMethod.invoke(object, new Object[] { list });
				} else if (tp.toString().indexOf("[Ljava.lang.String;") != -1) {
					String tmp = (String) jsonData.get(fieldName);
					String[] str = tmp.split(",");
					setMethod.invoke(object, new Object[] { str });
				}else if (tp.toString().indexOf("int") != -1){
					setMethod.invoke(object, new Object[] { ((Long)jsonData.get(fieldName)).intValue() });
				} else {
					setMethod.invoke(object, new Object[] { jsonData.get(fieldName) });
				}
			}
		}
		return object;

	}
}


代码已经过测试,支持String、int、list等常见类型。而json的解析我这里用的是JSONReader,依赖的jar包见附件。
分享到:
评论

相关推荐

    json字符串转换c++类对象

    在C++编程中,将JSON字符串转换为C++类对象是一项常见的任务,特别是在处理网络通信、数据存储或配置文件时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析...

    利用java反射将json字符串转成对象.zip

    在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...

    使用json-lib将java对象转换成json字符串

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

    java对象转换为json字符串或字符串数组

    除了序列化,`json-lib`还支持反序列化,即将JSON字符串转换回Java对象: ```java Person deserializedPerson = (Person) JSONSerializer.toJava(jsonString); ``` 6. JSONPath和JSONSchema: 在实际应用中,...

    Java中Json字符串直接转换为对象的方法(包括多层List集合)

    接下来,我们看一段示例代码,演示如何将JSON字符串转换为包含多层List集合的Java对象。这里假设我们有一个天气查询的API返回的JSON响应,其中包含城市列表,每个城市又有指数和天气数据等信息: ```java // 将JSON...

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    标题和描述提及的是将JSON字符串转换为Java对象,特别是涉及多层嵌套和List集合的情况。这在处理复杂数据结构时非常常见,比如服务器返回的响应可能包含嵌套的对象和数组。下面我们将详细介绍如何使用Jackson库来...

    Json对象与json字符串互相转换处理工具

    Json对象与json字符串互相转换处理工具

    json字符串转换插件

    通过这种方式,你可以使用`JsonUtils.jsonToJavaObject()`方法将JSON字符串转换为任意指定类型的Java对象,而`JsonUtils.javaObjectToJson()`则将Java对象转换为JSON字符串。 总之,JSON字符串转换插件是Java开发中...

    js 将json字符串转换为json对象

    当你从服务器获取到一个JSON格式的响应或者需要将数据以JSON格式发送到服务器时,就需要将JSON字符串转换为JSON对象,或者反之。本篇将详细介绍如何在JavaScript中进行这样的操作。 首先,要将JSON字符串转换为JSON...

    js json字符串转对象

    本文主要关注如何将JSON字符串转换为JavaScript对象。 1. **JSON.stringify() 和 JSON.parse()** `JSON.stringify()` 是JavaScript提供的一个内置函数,用于将JavaScript对象转换为JSON字符串。这在需要在网络间...

    asp字符串转json对象类

    本知识点主要关注如何将ASP中的字符串转换为JSON对象,特别地,这个过程是通过原生的VBScript(Visual Basic Script)实现的,而不是依赖于第三方库。 首先,我们需要理解VBScript中的JSON解析概念。由于ASP.NET...

    由php对象生成json字符串 把php对象变成json字符串.zip

    总的来说,将PHP对象转换为JSON字符串是通过json_encode()函数完成的,对于对象,可以考虑实现JsonSerializable接口或使用特定选项来控制序列化行为。在实际开发中,还要注意错误处理和编码选项的设置,以确保数据...

    通用的josn字符串转换为对象和对象转换为字符串的c#源码

    在C#中,将JSON字符串转换为对象的过程称为反序列化,而将对象转换为JSON字符串则称为序列化。下面将详细解释这两个过程以及如何在C#中实现它们。 **一、JSON反序列化** 反序列化是将JSON字符串转换为C#对象的过程...

    利用Google Gson实现JSON字符串和对象之间相互转换

    以下是一个简单的例子,展示如何将JSON字符串转换为Java对象: ```java class User { private String name; private int age; // getters and setters... } String jsonString = "{\"name\":\"John\", \"age\...

    JSON 字符串 与 java 对象的转换

    // 把JSON字符串转换为JAVA对象数组 JSONArray json = JSONArray.fromObject(personStr); List&lt;InvoidPerson&gt; persons = (List) JSONArray.toCollection(json, InvoidPerson.class); ``` #### 4. JSON字符串转换为...

    C# json格式解析,Json格式字符串与C#对象相互转换,类库+使用案例,注释详细

    /// 将Json字符串解析为C#中的对象 /// Json格式中的字符串值识别 /// 将Json字符串解析为Dictionary, dynamic&gt;对象。 /// 将Json字符串解析为dynamic[]对象。 /// Dictionary类型对象转换为Json格式字符串 /// C#...

    模仿json,根据对象生成json字符串,根据字符串生成对象

    同样以`com.google.gson`为例,我们可以使用`fromJson()`方法将JSON字符串转换回Java对象。在上面的例子中,如果我们已经有一个JSON字符串,可以这样做: ```java String jsonString = "{\"name\":\"Alice\",\"age\...

    json字符串轻松转换成对象

    在Java编程中,我们经常需要将JSON字符串转换为对象,以便进行数据处理。本教程将详细讲解如何在Java中实现这个过程,并提供一个具体的代码实例。 首先,我们需要引入能够处理JSON的库。在Java中,常用的有`org....

Global site tag (gtag.js) - Google Analytics