准备将这几年的工作进行一个系统的总结,会陆续发些东西出来供大家参考。
本文向大家介绍的是一个将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包见附件。
分享到:
相关推荐
在C++编程中,将JSON字符串转换为C++类对象是一项常见的任务,特别是在处理网络通信、数据存储或配置文件时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析...
在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...
除了序列化,`json-lib`还支持反序列化,即将JSON字符串转换回Java对象: ```java Person deserializedPerson = (Person) JSONSerializer.toJava(jsonString); ``` 6. JSONPath和JSONSchema: 在实际应用中,...
标题和描述提及的是将JSON字符串转换为Java对象,特别是涉及多层嵌套和List集合的情况。这在处理复杂数据结构时非常常见,比如服务器返回的响应可能包含嵌套的对象和数组。下面我们将详细介绍如何使用Jackson库来...
接下来,我们看一段示例代码,演示如何将JSON字符串转换为包含多层List集合的Java对象。这里假设我们有一个天气查询的API返回的JSON响应,其中包含城市列表,每个城市又有指数和天气数据等信息: ```java // 将JSON...
Json对象与json字符串互相转换处理工具
通过这种方式,你可以使用`JsonUtils.jsonToJavaObject()`方法将JSON字符串转换为任意指定类型的Java对象,而`JsonUtils.javaObjectToJson()`则将Java对象转换为JSON字符串。 总之,JSON字符串转换插件是Java开发中...
当你从服务器获取到一个JSON格式的响应或者需要将数据以JSON格式发送到服务器时,就需要将JSON字符串转换为JSON对象,或者反之。本篇将详细介绍如何在JavaScript中进行这样的操作。 首先,要将JSON字符串转换为JSON...
本文主要关注如何将JSON字符串转换为JavaScript对象。 1. **JSON.stringify() 和 JSON.parse()** `JSON.stringify()` 是JavaScript提供的一个内置函数,用于将JavaScript对象转换为JSON字符串。这在需要在网络间...
本知识点主要关注如何将ASP中的字符串转换为JSON对象,特别地,这个过程是通过原生的VBScript(Visual Basic Script)实现的,而不是依赖于第三方库。 首先,我们需要理解VBScript中的JSON解析概念。由于ASP.NET...
总的来说,将PHP对象转换为JSON字符串是通过json_encode()函数完成的,对于对象,可以考虑实现JsonSerializable接口或使用特定选项来控制序列化行为。在实际开发中,还要注意错误处理和编码选项的设置,以确保数据...
在C#中,将JSON字符串转换为对象的过程称为反序列化,而将对象转换为JSON字符串则称为序列化。下面将详细解释这两个过程以及如何在C#中实现它们。 **一、JSON反序列化** 反序列化是将JSON字符串转换为C#对象的过程...
以下是一个简单的例子,展示如何将JSON字符串转换为Java对象: ```java class User { private String name; private int age; // getters and setters... } String jsonString = "{\"name\":\"John\", \"age\...
// 把JSON字符串转换为JAVA对象数组 JSONArray json = JSONArray.fromObject(personStr); List<InvoidPerson> persons = (List) JSONArray.toCollection(json, InvoidPerson.class); ``` #### 4. JSON字符串转换为...
/// 将Json字符串解析为C#中的对象 /// Json格式中的字符串值识别 /// 将Json字符串解析为Dictionary, dynamic>对象。 /// 将Json字符串解析为dynamic[]对象。 /// Dictionary类型对象转换为Json格式字符串 /// C#...
同样以`com.google.gson`为例,我们可以使用`fromJson()`方法将JSON字符串转换回Java对象。在上面的例子中,如果我们已经有一个JSON字符串,可以这样做: ```java String jsonString = "{\"name\":\"Alice\",\"age\...
在Java编程中,我们经常需要将JSON字符串转换为对象,以便进行数据处理。本教程将详细讲解如何在Java中实现这个过程,并提供一个具体的代码实例。 首先,我们需要引入能够处理JSON的库。在Java中,常用的有`org....