`
endeavor416
  • 浏览: 64358 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Json的使用

    博客分类:
  • Json
阅读更多

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使用

    《jQuery-JSON使用详解》 在Web开发中,数据交换是不可或缺的一部分,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其简洁、易读性而被广泛应用。jQuery库提供了一套方便的API来处理JSON...

    C# NewtonJson使用说明

    **C# 中的NewtonJson使用详解** 在C#开发中,处理JSON数据是常见的任务,而Newtonsoft.Json(也称为Json.NET)是一个广泛使用的库,它提供了强大的JSON序列化和反序列化功能。本文将详细介绍如何使用Newtonsoft....

    JSON使用

    在标题“JSON使用”中,我们可以推测这篇博文可能涵盖了JSON的基本用法、解析和序列化的方法,以及在不同编程语言中的应用。在实际开发中,JSON常用于前后端数据交互,因为它具有结构清晰、易读性强的特点。 描述中...

    Json使用需要依赖包

    针对“Json使用需要依赖包”的主题,我们将详细介绍在不同编程语言中使用JSON所需的依赖包。 1. **Java** 在Java中,处理JSON的主要库有Jackson、Gson和org.json。Jackson是目前最流行的Java JSON库,它提供了高效...

    json使用jar包

    在描述中提到的是“json使用jar包”,这通常指的是这些库中的一个或多个。例如,Jackson提供了`jackson-databind`、`jackson-core`和`jackson-annotations`这三个主要的jar包,用于JSON的序列化和反序列化。 1. **...

    asp.net json使用

    ASP.NET JSON 使用详解 在现代Web开发中,JSON(JavaScript Object Notation)已经成为数据交换的主要格式,尤其是在异步通信(Ajax)中。ASP.NET,作为微软的Web应用程序框架,提供了全面的支持来处理JSON序列化、...

    Json 使用简单实例(VC)

    在这个"Json 使用简单实例(VC)"中,我们将探讨如何在Visual C++(VC)环境下使用JSON。 首先,为了在VC(如VS2008)中处理JSON,我们需要一个JSON库。常见的C++ JSON库有RapidJSON、nlohmann/json、jsoncpp等。在...

    java配合json使用的JAR

    本压缩包包含的"java配合json使用的JAR"提供了相关的支持,版本配套9个JAR,这可能包括了这些库的不同组件或者不同版本。 1. **Jackson**: Jackson是Java中最流行的JSON库之一,由FasterXML团队开发。它提供了...

    json使用手册 帮助文档

    这个“json使用手册帮助文档”显然是为了指导用户如何有效地使用和理解JSON格式。下面我们将深入探讨JSON的基本概念、结构以及在实际应用中的相关知识点。 1. JSON的基础概念 - JSON是一种独立于语言的数据格式,...

    json使用文档

    json使用教程

    linux c语言封装的json使用

    本篇文章将深入探讨如何在Linux系统下使用C语言封装的JSON库——cJSON,帮助开发者轻松地进行JSON数据的打包和解析。 cJSON是一个小型、快速且易于使用的JSON解析器,由David John Millman编写。它为C程序员提供了...

    json使用解读.rar

    本压缩包“json使用解读.rar”是针对JSON在实际使用过程中可能遇到的问题的集合,包含了源文件、测试代码以及详细的说明文档,旨在帮助开发者更好地理解和处理JSON相关的问题。 1. **JSON格式规范**:JSON格式要求...

    json使用-bookmanager

    "json使用-bookmanager"这个主题可能涉及到一个名为"BookManager"的项目或应用,它使用JSON来处理和管理书籍数据。 在"BookManager"中,JSON可能扮演以下几个角色: 1. 数据存储:JSON格式可以用于存储书籍信息,...

    json使用的jar包

    标题"json使用的jar包"表明我们将讨论的是与JSON操作相关的Java库,通常是一个包含处理JSON功能的JAR文件。在Java开发中,最常用的JSON库有Gson、Jackson、org.json和Fastjson等。 1. Gson:Google提供的一个开源库...

    json使用系列分享一

    在“json使用系列分享一”中,我们可以期待探讨以下关于JSON的知识点: 1. JSON的基本结构:JSON由键值对组成,键(key)总是字符串,而值(value)可以是各种类型,包括字符串、数字、布尔值、数组、对象或null。...

    第六章 Caché JSON 使用JSON适配器.pdf

    【第六章 Caché JSON 使用JSON适配器】 在Caché数据库系统中,JSON(JavaScript Object Notation)适配器提供了一种便捷的方式,将ObjectScript对象(注册的、序列化的或持久化的)与JSON文本或动态实体相互转换...

    json使用的全部jar包

    "json使用的全部jar包"指的是在进行Java项目开发时,为了支持JSON操作所需要引入的一系列Java库文件。这些.jar包通常包含了处理JSON解析、生成、序列化和反序列化的类和方法。下面我们将深入探讨JSON处理的常用库...

    C# JSON库 Newtonsoft.Json 使用范例源码(双向动态生成支持嵌套,无需事先定义类)

    C# JSON库 Newtonsoft.Json 使用范例源码(双向动态生成,无需事先定义类): 1. 将字典类型序列化成Json字符串 2. 将Json字符串,反序列化成字典类型 3. 动态添加字典类型并序列化为Json字符串 4. 根据Json字符...

    json使用例子

    在"json使用例子"这个主题中,我们可以深入探讨以下几个关键知识点: 1. JSON的基本结构:JSON数据以键值对(key-value pairs)的形式存在,类似于JavaScript的对象。键(key)是字符串,用双引号包围;值(value)...

    Java中使用Json

    本文将深入探讨在Java中如何使用JSON,以及其在实际开发中的应用场景。 首先,Java中处理JSON的主要工具有两个:Jackson和Gson。这两个库提供了API,可以帮助我们轻松地将Java对象转换为JSON字符串,以及将JSON字符...

Global site tag (gtag.js) - Google Analytics