准备将这几年的工作进行一个系统的总结,会陆续发些东西出来供大家参考。
本文向大家介绍的是一个将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++类对象,json 字符串转成c++类对象
Json对象与json字符串互相转换处理工具
利用java反射将json字符串转成对象;
一、JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象: //由JSON字符串转换为JSON对象 var obj = eval(‘(‘ + str + ‘)’); 或者 var obj = str.parseJSON(); //由JSON...
解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包
主要用于将java对象转换为json对象字符串,或字符串数组。
用java实现的递归下降文法 将JSon字符串转换成Java对象 为了简单化 忽略了很多情况 仅仅作为初接触编译原理的同学们共勉 User对象有一个Teacher对象 Teacher里有一个Book对象 等等 比如 User user User json User ...
json字符串和js对象之间的转换,包括eval、parseJSON函数、JSON.parse、$.toJSON、$.parseJSON、复杂的json格式对象使用,让你一分钟理解json的那些事
忽略字段的首字母大小写,将json字符串转成javabean对象,解决Java对象中属性中首字母大写而取不到值(取到的值为空)的问题 忽略字段的首字母大小写,将json字符串转成List,解决Java对象中属性中首字母大写而取不...
下面小编就为大家带来一篇Java中Json字符串直接转换为对象的方法(包括多层List集合)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JSON 字符串 与 java 对象的转换
将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键 例如: JSON字符串: var str = '{ "name": ...
/// 将Json字符串解析为C#中的对象 /// Json格式中的字符串值识别 /// 将Json字符串解析为Dictionary, dynamic>对象。 /// 将Json字符串解析为dynamic[]对象。 /// Dictionary类型对象转换为Json格式字符串 /// C#...
NULL 博文链接:https://yxgyh.iteye.com/blog/392657
利用Google Gson实现JSON字符串和对象之间相互转换,内含源码和jar包
封装jsonbase类,抽象C++对象与json字符的转换的基本方法tojson、fromjson,以及json字符保存为文件StyledStreamWriter,从文件中读取json字符串并转换成C++对象fromFile。以学生类、学生选择的课程类、最终生成的...
自己有空时用java反射写的json转化工具,有不完善之处,多包涵
可以处理简单java对象和格式正确的json字符串互相转换。 net.sf.json.JSONArray可以处理复杂的java集合对象和格式正确的json字符串互相转换. 1.json字符串转简单java对象 2.简单java对象转json字符串 3.json字符...