1.声明,该实作参看了 http://www.blogjava.net/wuxufeng8080/articles/169035.html
2.Json-lib的使用依赖的jar包有:commons-lang.jar, commons-logging.jar,commons-beanutils.jar,
commons-collections.jar,xom-1.0-2005-01-05.jar, ezmorph-1.0.1.jar
3.实作代码
package joe.json;
import java.beans.PropertyEditorSupport;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.MutablePropertyValues;
/**
* Json帮助类,提供Json字符串和Model类之间相互转化的操作
* @author 黄少森 软件开发部-斯凯文<br>
* @created in 2008-9-17 上午11:29:43
*/
public class JsonHelper {
/**
* 直接把Json字符串转化成model对象List
* @param key 要获得的对象Json对象数组的名称
* @param jsonStr Json字符串
* @param model model类文件
* @return 返回一个Model类的列表
*/
public static List convertJson2Objects(String key , String jsonStr , Class model){
List modelList = new ArrayList();
JSONObject jo = JSONObject.fromObject(jsonStr);
List list = (List)jo.get(key);
if (list != null && list.size() > 0){
for(int i = 0 ; i < list.size() ; i ++){
BeanWrapperImpl bw = new BeanWrapperImpl(model);
bw.setPropertyValues(new MutablePropertyValues((Map)list.get(i)), true);
Object obj = bw.getWrappedInstance();
modelList.add(obj);
}
}
return modelList;
}
/**
* 直接把Json字符串转化成model对象List (支持model里含有子类型)
* @param key 要获得的对象Json对象数组的名称
* @param jsonStr Json字符串
* @param model model类文件
* @param childModel 子类型,是一个数组(model类里的属性有可能有多个类型 )
* @return 返回一个Model类的列表
*/
public static List convertJson2Objects(String key , String jsonStr , Class model , final Class [] childModel){
List modelList = new ArrayList();
JSONObject jo = JSONObject.fromObject(jsonStr);
List list = (List)jo.get(key);
if (list != null && list.size() > 0){
//先生成一个Bean映射的模板
if (childModel != null){
for(int i = 0 ; i < list.size() ; i ++){
BeanWrapperImpl bw = new BeanWrapperImpl(model);
for (int k = 0 ; k < childModel.length ; k ++){
final int j = k;
bw.registerCustomEditor(childModel[j], new PropertyEditorSupport(){
public void setValue(Object value) {
BeanWrapperImpl childBW = new BeanWrapperImpl(childModel[j]);
childBW.setPropertyValues(new MutablePropertyValues((Map)value), true);
super.setValue(childBW.getWrappedInstance());
}
});
}
bw.setPropertyValues(new MutablePropertyValues((Map)list.get(i)), true);
Object obj = bw.getWrappedInstance();
modelList.add(obj);
}
} else {
convertJson2Objects( key , jsonStr , model);
}
}
return modelList;
}
/**
* 把Json对象转化成JavaModel(支持子类型的转化)
* @param params 对象参数
* @param model 转化的model类
* @param childModel 子类型,是一个数组(model类里的属性有可能有多个类型 )
* @return
*/
public static Object generateBean(Map params, Class model , final Class[] childModel) {
BeanWrapperImpl bw = new BeanWrapperImpl(model);
if (childModel != null){
for (int i = 0 ; i < childModel.length ; i ++){
final int j = i;
bw.registerCustomEditor(childModel[j], new PropertyEditorSupport(){
public void setValue(Object value) {
BeanWrapperImpl impl = new BeanWrapperImpl(childModel[j]);
impl.setPropertyValues(new MutablePropertyValues((Map)value), true);
super.setValue(impl.getWrappedInstance());
}
});
}
}
bw.setPropertyValues(new MutablePropertyValues(params), true);
return bw.getWrappedInstance();
}
/**
* 把Json对象转化成JavaModel
* @param params 对象参数
* @param model 转化的model类
* @return
*/
public static Object generateBean(Map params, Class model) {
BeanWrapperImpl bw = new BeanWrapperImpl(model);
bw.setPropertyValues(new MutablePropertyValues(params), true);
return bw.getWrappedInstance();
}
public static void main(String[] args) {
//String jsonStr = request.getParameter("data");
String jsonStr = "{list:[{id:'20',name:'dd'}]}";
List<Blog> blogList = JsonHelper.convertJson2Objects("list", jsonStr, Blog.class, new Class[]{Blog.class});
for (Blog b: blogList) {
System.out.println(b.getId()+","+ b.getName());
}
}
}
分享到:
相关推荐
《jQuery-JSON使用详解》 在Web开发中,数据交换是不可或缺的一部分,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其简洁、易读性而被广泛应用。jQuery库提供了一套方便的API来处理JSON...
**C# 中的NewtonJson使用详解** 在C#开发中,处理JSON数据是常见的任务,而Newtonsoft.Json(也称为Json.NET)是一个广泛使用的库,它提供了强大的JSON序列化和反序列化功能。本文将详细介绍如何使用Newtonsoft....
在标题“JSON使用”中,我们可以推测这篇博文可能涵盖了JSON的基本用法、解析和序列化的方法,以及在不同编程语言中的应用。在实际开发中,JSON常用于前后端数据交互,因为它具有结构清晰、易读性强的特点。 描述中...
针对“Json使用需要依赖包”的主题,我们将详细介绍在不同编程语言中使用JSON所需的依赖包。 1. **Java** 在Java中,处理JSON的主要库有Jackson、Gson和org.json。Jackson是目前最流行的Java JSON库,它提供了高效...
在描述中提到的是“json使用jar包”,这通常指的是这些库中的一个或多个。例如,Jackson提供了`jackson-databind`、`jackson-core`和`jackson-annotations`这三个主要的jar包,用于JSON的序列化和反序列化。 1. **...
ASP.NET JSON 使用详解 在现代Web开发中,JSON(JavaScript Object Notation)已经成为数据交换的主要格式,尤其是在异步通信(Ajax)中。ASP.NET,作为微软的Web应用程序框架,提供了全面的支持来处理JSON序列化、...
在这个"Json 使用简单实例(VC)"中,我们将探讨如何在Visual C++(VC)环境下使用JSON。 首先,为了在VC(如VS2008)中处理JSON,我们需要一个JSON库。常见的C++ JSON库有RapidJSON、nlohmann/json、jsoncpp等。在...
本压缩包包含的"java配合json使用的JAR"提供了相关的支持,版本配套9个JAR,这可能包括了这些库的不同组件或者不同版本。 1. **Jackson**: Jackson是Java中最流行的JSON库之一,由FasterXML团队开发。它提供了...
这个“json使用手册帮助文档”显然是为了指导用户如何有效地使用和理解JSON格式。下面我们将深入探讨JSON的基本概念、结构以及在实际应用中的相关知识点。 1. JSON的基础概念 - JSON是一种独立于语言的数据格式,...
json使用教程
本篇文章将深入探讨如何在Linux系统下使用C语言封装的JSON库——cJSON,帮助开发者轻松地进行JSON数据的打包和解析。 cJSON是一个小型、快速且易于使用的JSON解析器,由David John Millman编写。它为C程序员提供了...
本压缩包“json使用解读.rar”是针对JSON在实际使用过程中可能遇到的问题的集合,包含了源文件、测试代码以及详细的说明文档,旨在帮助开发者更好地理解和处理JSON相关的问题。 1. **JSON格式规范**:JSON格式要求...
"json使用-bookmanager"这个主题可能涉及到一个名为"BookManager"的项目或应用,它使用JSON来处理和管理书籍数据。 在"BookManager"中,JSON可能扮演以下几个角色: 1. 数据存储:JSON格式可以用于存储书籍信息,...
标题"json使用的jar包"表明我们将讨论的是与JSON操作相关的Java库,通常是一个包含处理JSON功能的JAR文件。在Java开发中,最常用的JSON库有Gson、Jackson、org.json和Fastjson等。 1. Gson:Google提供的一个开源库...
在“json使用系列分享一”中,我们可以期待探讨以下关于JSON的知识点: 1. JSON的基本结构:JSON由键值对组成,键(key)总是字符串,而值(value)可以是各种类型,包括字符串、数字、布尔值、数组、对象或null。...
【第六章 Caché JSON 使用JSON适配器】 在Caché数据库系统中,JSON(JavaScript Object Notation)适配器提供了一种便捷的方式,将ObjectScript对象(注册的、序列化的或持久化的)与JSON文本或动态实体相互转换...
"json使用的全部jar包"指的是在进行Java项目开发时,为了支持JSON操作所需要引入的一系列Java库文件。这些.jar包通常包含了处理JSON解析、生成、序列化和反序列化的类和方法。下面我们将深入探讨JSON处理的常用库...
C# JSON库 Newtonsoft.Json 使用范例源码(双向动态生成,无需事先定义类): 1. 将字典类型序列化成Json字符串 2. 将Json字符串,反序列化成字典类型 3. 动态添加字典类型并序列化为Json字符串 4. 根据Json字符...
在"json使用例子"这个主题中,我们可以深入探讨以下几个关键知识点: 1. JSON的基本结构:JSON数据以键值对(key-value pairs)的形式存在,类似于JavaScript的对象。键(key)是字符串,用双引号包围;值(value)...
本文将深入探讨在Java中如何使用JSON,以及其在实际开发中的应用场景。 首先,Java中处理JSON的主要工具有两个:Jackson和Gson。这两个库提供了API,可以帮助我们轻松地将Java对象转换为JSON字符串,以及将JSON字符...