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

使用JSON-LIB转换JAVA对象

阅读更多

使用JSON-LIB可以极大的简化JAVA对象转换成JSON对象所需进行的操作,更可以避免人工操作生成JSON对象字符串时带来的麻烦和误操作:
使用JSON-LIB,首先要有几个支持的包:
http://json-lib.sourceforge.net下载json-lib-1.1-jdk15.jar
commons-lang.jarcommons-logging.jarcommons-beanutils.jar  这些包可在tomcat/comon/lib下找到
EZMorph 下载地址http://ezmorph.sourceforge.net
morph-1.0.1 下载地址:http://morph.sourceforge.net

使用例子:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSONTest {
    public static void main(String[] args) {   
        JSONTest j = new JSONTest();   
        j.ObjectList2json();   
    }    
   
    public void ObjectList2json(){
        Map map = new HashMap();
        
        List jlist = new ArrayList();
        JSONTestBean bean1 = new JSONTestBean("zhangbo","123123");
        JSONTestBean bean2 = new JSONTestBean("lisi","65489");
        Props props = new Props("127.0.0.1","8008");
        
        jlist.add(bean1);
        jlist.add(bean2);
        
        map.put("Props", props);
        map.put("jsonObjectList", jlist);
        
        JSONArray jsonArray = JSONArray.fromObject(map);   
        System.out.println(jsonArray);   
    }
    
    public void arr2json() {   
        boolean[] boolArray = new boolean[] { true, false, true };   
        JSONArray jsonArray = JSONArray.fromObject(boolArray);   
        System.out.println(jsonArray);   
        // prints [true,false,true]   
    }   
   
    public void list2json() {   
        List list = new ArrayList();  
        list.add("first");   
        list.add("second");   
        JSONArray jsonArray = JSONArray.fromObject(list);   
        System.out.println(jsonArray);   
        // prints ["first","second"]   
    }   
   
    public void createJson() {   
        JSONArray jsonArray = JSONArray.fromObject("['json','is','easy']");   
        System.out.println(jsonArray);   
        // prints ["json","is","easy"]   
    }   
   
    public void map2json() {   
        Map map = new HashMap();
        map.put("name", "json");   
        map.put("bool", Boolean.TRUE);   
        map.put("int", new Integer(1));   
        map.put("arr", new String[] { "a", "b" });   
        map.put("func", "function(i){ return this.arr[i]; }");   
   
        JSONObject json = JSONObject.fromObject(map);   
        System.out.println(json);   
        // prints   
        // ["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){   
        // return this.arr[i]; }]   
    }   
   
    public void bean2json() {   
        JSONObject jsonObject = JSONObject.fromObject(new JSONTestBean("zhangbo","234234"));   
        System.out.println(jsonObject);   
        /*  
         * prints   
         * {"func1":function(i){ return this.options[i];  
         * },"pojoId":1,"name":"json","func2":function(i){ return  
         * this.options[i]; }}  
         */   
    }   
   
    public void json2bean() {   
        String json = "{name=\"json2\",func1:true,pojoId:1,func2:function(a){ return a; },options:['1','2']}";   
//        JSONObject jb = JSONObject.fromString(json);   
//        JSONObject.toBean(jb, MyBean.class);   
        System.out.println();   
    }   
}

其它两个测试实体Bean:
public class JSONTestBean {

    private String userName;

    private String password;

    public JSONTestBean() {

    }

    public JSONTestBean(String username, String password) {
        this.userName = username;
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

//===================================================
public class Props {
    private String ip;
    private String port;

    public Props() {
    }

    public Props(String ip, String port) {
        this.ip = ip;
        this.port = port;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }

}

 

使用起来很方便,有了JSON-LIB的支持,可以使开发者轻松构建起基于JSON的AJAX应用程序

附加:关于使用JSON-LIB转换带有DATE类型的对象需要额外的一些设置

JsonConfig cfg=new JsonConfig();
cfg.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImpl());
cfg.registerJsonValueProcessor(java.sql.Date.class, new JsonValueProcessorImpl());
JSONObject obj = JSONObject.fromObject(info,cfg);

 

JsonValueProcessorImpl为实现了源代码中的接口JsonValueProcessor

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class JsonValueProcessorImpl implements JsonValueProcessor{
 private String format="yyyy-MM-dd";
 public JsonValueProcessorImpl(){
  
 }
 public JsonValueProcessorImpl(String format){
  this.format=format;
 }
 public Object processArrayValue(Object value, JsonConfig jsonConfig) {
  String[] obj={};
  if(value instanceof Date[]){
   SimpleDateFormat sf=new SimpleDateFormat(format);
   Date[] dates=(Date[])value;
   obj =new String[dates.length];
   for (int i = 0; i < dates.length; i++) {
    obj[i]=sf.format(dates[i]);
   }
  }
  return obj;
 }

 public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
  if(value instanceof Date){
   String str=new SimpleDateFormat(format).format((Date)value);
   return str;
  }
  return value.toString();
 }

 public String getFormat() {
  return format;
 }

 public void setFormat(String format) {
  this.format = format;
 }
 
} 

  

这也只是实现了将DATE类型转换成yyyy-MM-dd的格式...测试一下吧!~~~

分享到:
评论
1 楼 我奋斗 2009-06-02  
String to Json 如何做?

相关推荐

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    使用json-lib实现json与Java对象的互转

    `json-lib` 是一个 Java 库,它提供了将 JSON 格式的数据转换为 Java 对象,以及将 Java 对象转换为 JSON 格式数据的功能。在 Java 开发中,`json-lib` 是一个常用的 JSON 处理工具,尤其适用于需要处理复杂 JSON ...

    json-lib-2.4-jdk15.jar下载

    1. 简单易用:json-lib的API简单易于使用,一般只需要一行或两行代码就可以完成Java对象和JSON的相互转换。 2. 支持对象图:可以将复杂的对象层次结构与JSON相互转换,支持List、Map、数组等类型。 3. 支持注解:支持@...

    json-lib-2.4-jdk15.jar

    json-lib是一个Java库,它提供了一种方便的方式来序列化和反序列化Java对象为JSON格式,以及将JSON数据转换回Java对象。 json-lib-2.4-jdk15.jar是json-lib的一个特定版本,适用于JDK 1.5环境。这个版本的库包含了...

    json-lib应用所有jar

    1. **易用性**:JSON-lib提供了简单直观的API,使得Java对象与JSON之间的转换变得简单。例如,可以使用`net.sf.json.JSONObject`来表示一个JSON对象,`net.sf.json.JSONArray`表示JSON数组。 2. **灵活性**:它支持...

    json-lib-2.2.3-jdk15.jar

    JSON-lib是一个Java库,它提供了将Java对象转换为JSON表示以及从JSON文本反序列化回Java对象的功能。该库名为`json-lib-2.2.3-jdk15.jar`,特别针对Java 1.5版本进行了优化。 JSON-lib的主要特点和功能包括: 1. *...

    json-lib-2.3.jar

    json-lib-2.3.jar是这个库的一个版本,用于支持将Java对象转换成JSON格式和将JSON数据反序列化为Java对象。 标题中提到的"json-lib-2.3.jar"是json-lib库的一个具体实现,主要包含了一系列处理JSON的类和方法。这个...

    json-lib-2.2.2-jdk15.jar

    1. **JSON序列化与反序列化**:json-lib允许将Java对象转换为JSON字符串,反之亦然。例如,你可以将一个Java的HashMap转换成JSON格式,便于在网络上传输,或者将接收到的JSON字符串解析成Java对象,便于进一步处理。...

    json-lib-2.4-jdk15和全部依赖jar包

    JSON库如`json-lib`则提供了将Java对象转换为JSON格式和从JSON字符串反序列化为Java对象的功能。`json-lib-2.4-jdk15`是JSON库的一个特定版本,专为JDK 1.5设计,确保在该环境下能够正常运行。 `json-lib`库主要...

    json-lib-2.4和相应的依赖包

    JSON库如json-lib-2.4是Java开发者在处理JSON数据时的重要工具,它提供了一系列API,使得JSON与Java对象之间的转换变得更加简单。本文将深入探讨json-lib-2.4及其在Java开发中的应用。 首先,json-lib-2.4是一个...

    json-lib jar和所有依赖的jar

    在文件列表中的"jsonlib需要jar包",这可能是指包含了`json-lib`库及其所有依赖的JAR文件。在实际项目中,将这些JAR文件添加到项目的类路径(classpath)中,就可以使用`json-lib`提供的功能,而无需通过Maven或其他...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    在Java世界里,`json-lib-2.1.jar` 是一个用于处理JSON的库,它提供了一系列的方法来将Java对象转换为JSON格式,以及将JSON字符串反序列化回Java对象。这个库支持多种Java类型,包括基本类型、集合、Map、自定义Java...

    json-lib-2.4-jdk15.jar及其相关依赖

    `json-lib`是一个Java库,它提供了一种将Java对象转换为JSON表示,并将JSON数据转换回等效Java对象的方法。`json-lib-2.4-jdk15.jar`是这个库的一个特定版本,适用于JDK 1.5环境。 在Java开发中,`json-lib`库提供...

    JSON-lib包json-lib-0.8.jar和json-lib-0.9.jar包

    JSON-lib是一个Java库,用于将Java对象转换为JSON(JavaScript Object Notation)格式,以及将JSON数据转换回Java对象。这个库提供了多种方法来处理JSON数据,使得在Java应用程序中与JSON交互变得更加简单。JSON是一...

    json-lib-2.3-jdk15开发包和所有依赖包

    `json-lib`是一个Java库,它提供了将Java对象转换为JSON格式,以及从JSON字符串反序列化回Java对象的功能。`json-lib-2.3-jdk15`是这个库的一个特定版本,兼容JDK 1.5,这意味着它可以在运行JDK 1.5或更高版本的Java...

    json-lib-2.3-jdk15基础jar包合辑

    JSON Lib是一个Java库,它提供了将Java对象转换为JSON格式,以及将JSON文本解析回等效Java对象的功能。这个库支持多种Java类型,包括基本类型、集合、Map、自定义Java类等,使得在Java应用程序中处理JSON变得简单。 ...

    json-lib所用的jar包

    `json-lib`是一个Java库,它提供了一种将Java对象转换为JSON格式,以及将JSON数据还原为Java对象的能力。在Web开发中,这个功能非常重要,因为服务器端处理的数据需要以某种形式传递到客户端,JSON由于其简洁性和...

    json-lib-2.4 jar 程序文件

    `json-lib-2.4 jar`是JSON-Lib的一个版本,它是一个针对Java的开源项目,用于在Java对象和JSON数据之间进行转换。这个版本兼容JDK 15及更高版本,意味着它能够很好地运行在较新的Java环境中。这个jar包包含了一系列...

    json-lib-2.4-jdk15及其依赖jar包

    5. **自定义转换规则**:如果默认的转换规则不能满足需求,JSON-Lib允许开发人员自定义转换策略,以处理特殊类型的Java对象。 在实际开发中,JSON-Lib通常与其他Java Web框架结合使用,如Spring MVC,以实现RESTful...

    json-lib.jar

    例如,你可以创建一个Java对象,然后使用JSONObject将其转换为JSON: ```java Map, String&gt; map = new HashMap(); map.put("name", "John"); map.put("age", "30"); JSONObject jsonObject = JSONObject.fromObject...

Global site tag (gtag.js) - Google Analytics