`
zhelong111
  • 浏览: 188690 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JsonUtil工具类

 
阅读更多
package com.example.jsonutil;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale; 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonUtil {
	  
	public static <T> List<T> parseJson(Class<T> clzz, String jsonObjArray) {
		
		List<T> modelVOList = new ArrayList<T>(); 
		try {		
			
			JSONArray jsonArray = new JSONArray(jsonObjArray);
			
			if (jsonArray != null && jsonArray.length() > 0) {
				for (int i = 0; i < jsonArray.length(); i++) { 
					T object = null;
					try {
						object = clzz.newInstance();
					} catch (IllegalAccessException e1) { 
						e1.printStackTrace();
					} catch (InstantiationException e1) { 
						e1.printStackTrace();
					}
					JSONObject obj = jsonArray.getJSONObject(i);
					 
					Field[] fields = object.getClass().getDeclaredFields();
					for (int j = 0; j < fields.length; j++) {
						String fieldName = fields[j].getName();
						String typeName = fields[j].getType().getCanonicalName().substring(fields[j].getType().getCanonicalName().lastIndexOf(".") + 1);
						Method jsonObjGetMethod = null;
						Method vehicleVOSetMethod = null;
						try {
							String jsonGetMethodName = "get" + typeName;
							if ("Integer".equals(typeName) || "BigDecimal".equals(typeName)) {
								jsonGetMethodName = "getInt";
							} 
							String firstChar = String.valueOf(fieldName.toUpperCase(Locale.US).charAt(0));
							String vehicleVOSetMethodName = "set" + firstChar + fieldName.substring(1);
							jsonObjGetMethod = obj.getClass().getDeclaredMethod(jsonGetMethodName, new Class[]{String.class});
							vehicleVOSetMethod = object.getClass().getDeclaredMethod(vehicleVOSetMethodName, new Class[]{fields[j].getType()});
							
							Object valueObject = jsonObjGetMethod.invoke(obj, new Object[]{fieldName});
							if (valueObject instanceof String) {
								vehicleVOSetMethod.invoke(object, new String[]{(String)valueObject});
							} else if (valueObject instanceof Long) {
								vehicleVOSetMethod.invoke(object, new Long[]{(Long)valueObject});
							} else if (valueObject instanceof Double) {
								vehicleVOSetMethod.invoke(object, new Double[]{(Double)valueObject});
							} else if (valueObject instanceof Integer) {
								vehicleVOSetMethod.invoke(object, new Integer[]{(Integer)valueObject});
							} else if (valueObject instanceof BigDecimal) {
								vehicleVOSetMethod.invoke(object, new BigDecimal[]{(BigDecimal)valueObject});
							}  
							
						} catch (SecurityException e) { 
							e.printStackTrace();
						} catch (NoSuchMethodException e) { 
							e.printStackTrace();
						} catch (Exception e) {
							e.printStackTrace();
						} 
					} 
					modelVOList.add(object);	
				}
			}
		} catch (JSONException e) {
			e.printStackTrace();
		} 
		return modelVOList;
	} 
}


使用范例:
People people = new People();
		people.setId("111");
		people.setAge(12);
		people.setName("zhelong");
		people.setWeight(111.2);
		
		List<People> peopleList = new ArrayList<People>();
		peopleList.add(people);
		peopleList.add(people);
		peopleList.add(people);
		 
		
		Gson gson = new Gson();
		
		String jsonString = gson.toJson(peopleList);
		
		List<People> peoples = JsonUtil.parseJson(People.class, jsonString);
		for (People p : peoples) {
			System.out.println(p.getId());
			System.out.println(p.getName());
			System.out.println(p.getWeight());
			System.out.println(p.getAge());
			System.out.println("------------------------------");
		}
分享到:
评论

相关推荐

    Java实现的JSONUtil工具类与用法示例

    JSONUtil工具类是Java开发中处理JSON数据的一种实用工具,它简化了JSON对象与Java对象之间的转换过程。在本文中,我们将深入探讨JSONUtil工具类的实现和使用方法,以及如何利用阿里巴巴的Fastjson库来增强JSON操作。...

    JsonUtil代码工具类

    JsonUtil工具类通常包含了处理JSON对象与Java对象之间转换的一系列方法。在描述中提到的“2个工具类”,可能是指JsonUtil类本身以及它可能依赖的辅助类。JsonUtil的主要功能包括将JSON字符串解析为Java对象,如...

    JsonUtil json工具类

    JsonUtil json工具类 JsonUtil json工具类

    淘淘商城07-工具类

    JsonUtil工具类通常集成了这些库的功能,包括JSON对象与Java对象的相互转换,如序列化和反序列化,以及JSON字符串的解析和生成,使JSON操作更加简单。 5. **其他可能的工具类**: 除了上述的几个主要类别,这个...

    Gson工具类 JsonUtil

    Google json工具类,将java对象装换为json,支持泛型和任意类型

    JSON jar包含源码及应用类JSONUtil

    JSON jar包含源码及应用类JSONUtil,可以直接查看源码不用反编译,并且可以直接调用JSONUtil工具类进行,JSon字符串转换为JavaBean ,并可以把JavaBean转换为JSon字符串。

    JSONUtil java工具类,快速方便读取JSON

    JSONUtil java工具类,快速方便读取JSON

    JSON后台相互转换.docx

    例如,JsonUtil工具类提供了getObject4JsonString方法,可以将JSON字符串转换为Java对象。 ```java public static Object getObject4JsonString(String jsonString, Class pojoClass) { JSONObject jsonObject = ...

    JAVA JSON 解析

    在 JsonUtil 工具类中,作者使用了 json-lib 库来将 JSON 字符串转换为 JSONObject 对象,然后使用 JSONObject 的 toBean 方法将 JSONObject 对象转换为 Java 对象。 在 Java 中,JSON 解析的重要性不言而喻。随着...

    struts2+json的使用

    这通常意味着在Maven的pom.xml文件中添加相应的依赖,或者在不使用构建工具的情况下,手动将jar包放入类路径。 2. 配置Struts2的JSON插件:在struts.xml配置文件中,添加JSON插件的配置,以启用JSON支持。 ```xml ...

    JsonUitl(一 个json转成list的简单通用工具类)

    `JsonUtil` 是一个Java工具类,专门用来处理JSON数据,特别是将JSON对象数组转换为List类型,方便对数据进行进一步的操作。 在Java中,处理JSON数据通常需要借助第三方库,如Jackson、Gson或Fastjson等。这些库提供...

    JsonUtil工具累

    json工具类,基于com.google.code.gson封装的json转换工具类

    json数据转换工具jsonutil

    JSONUtil是一个Java工具类,专门设计用于处理JSON数据,它提供了方便的方法将JSON字符串与Java对象之间进行转换,无需依赖其他外部jar包。本文将深入探讨JSONUtil的核心功能及其在实际开发中的应用。 首先,...

    android工具类 26个实用工具类

    4. **JSON解析工具类**:如`JsonUtil`,用于解析JSON字符串到Java对象,或把Java对象转换成JSON格式,通常会利用Gson、Jackson或Fastjson等库。 5. **图片处理工具类**:可能包括图片的加载、缩放、裁剪、圆角处理...

    Android快速开发系列 10个常用工具类 程序源码

    8. **JsonUtil**: JSON解析工具类,可能基于Gson或Jackson库,用于JSON对象与Java对象之间的相互转换。在处理API数据或者本地存储JSON数据时,JsonUtil大大简化了数据处理过程。 9. **DialogUtil**: 对话框操作工具...

    jackjson jar包

    描述中提到的"还有一个JSONUtil工具类"可能是指一个自定义的工具类,封装了一些常见的JSON操作,如快速的序列化和反序列化,或者提供了额外的便利方法。这样的工具类可以简化开发过程,提高代码的可读性和复用性。 ...

    java个人开发工具类

    - JSON解析工具类:如JsonUtil,提供JSON字符串与Java对象间的转换,如Gson或Jackson库的封装。 - 线程工具类:如ThreadUtil,包含线程创建、线程同步、线程睡眠等辅助方法。 - 验证码生成与验证工具类:用于生成...

    hutool一个Java基础工具类

    《Hutool:Java基础工具类的全面解析》 在Java开发中,高效便捷的工具类库是提高开发效率和代码质量的关键。Hutool就是这样一款强大的Java基础工具类库,它对Java SDK中的众多功能进行了封装,为开发者提供了丰富的...

    json 转化工具类

    这里提到的`JsonUtil`可能是其中一个库的工具类,或者是一个自定义的工具类。这类工具类通常提供了一系列静态方法,方便开发者进行JSON与Java对象之间的相互转换。 1. **Jackson库**:Jackson是Java中最常用的JSON...

Global site tag (gtag.js) - Google Analytics