`
JiongBull
  • 浏览: 8051 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

转:可用的json

阅读更多

使用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 楼 JiongBull 2010-05-02  
包下载地址见这里:http://www.iteye.com/topic/314168

相关推荐

    非常高效的json库,C++编写,windows,linux都可用

    - **解析JSON**:通过`parse`函数将JSON字符串转化为JSON对象,例如`Json::Value value = Json::parse(jsonString);` - **访问数据**:使用`get`或`[]`操作符获取键对应的值,如`std::string name = value["name"]...

    Json、excel文件相互转换工具

    JSON(JavaScript Object Notation)和Excel是两种广泛用于数据存储和交换的格式。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,采用完全独立于语言...

    java json依赖包(完整直接可用版)

    此完整直接可用版的Java JSON依赖包包含了多个关键库,包括: 1. **json-lib**:这是一个用于Java平台的JSON库,提供了多种Java集合和XML到JSON以及反之的转换方法。例如,你可以将Java的HashMap、ArrayList等对象...

    org.json.jar工具包下载(可用)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间的数据传输。`org.json`是Java平台上的一个开源库,它提供了一系列API,方便开发者对JSON进行解析、创建和操作。这个资源...

    Json.net 全版本新版dll,绝对可用

    JSON.NET 是一个非常流行的 JSON 库,主要用于 .NET 开发,尤其在 C# 中广泛使用。这个压缩包包含了 JSON.NET 的多个版本,适用于不同的 .NET Framework 版本,确保无论你的项目基于哪个框架,都能找到兼容的 DLL ...

    xml & json 转换工具

    这篇博客文章(虽然链接不可用)可能探讨了如何在Java环境中使用开源库进行XML和JSON之间的转换。根据提供的文件名,我们可以推断出可能涉及的几个关键库: 1. **ezmorph-1.0.6.jar**: Ez Morph是一个Java库,主要...

    pb解析与生成json

    综上所述,"pb解析与生成json"涉及到ProtoBuf的使用,以及如何在PB9.0环境下进行与JSON的互转。通过理解ProtoBuf和JSON的基本概念,以及它们在实际开发中的应用,开发者可以有效地利用提供的资源提升项目性能和交互...

    java-对象数组转换为json

    ### Java对象数组转JSON 首先,我们来看如何将一个Java对象数组转换成JSON格式。这通常涉及到使用第三方库如`fastjson`、`Jackson`或`org.json`等。这里以`org.json`为例进行说明: ```java import org.json....

    json-schema-doc:JavaScript JSON-Schema 渲染器

    总之,JSON-Schema-Doc 是一个强大的工具,它简化了 JSON-Schema 的文档过程,提升了 API 文档的质量和可用性,是现代 Web 开发中的重要组成部分。通过使用 JSON-Schema-Doc,开发者可以更有效地管理和共享他们的 ...

    将xls转变为json格式工具

    如果源码可用,这还为用户提供了定制或扩展功能的可能性,例如添加自定义的转换规则或错误处理机制。 总的来说,这个工具解决了在Java环境中批量将Excel数据转换成JSON格式的问题,提供了一种有效且灵活的数据转换...

    (完整可用)json需要的全部Jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C家族语言,包括C、C++、C#、Java、JavaScript、Perl、Python等。JSON是数据交换的理想选择,...

    json-2.2.1可用

    "json-2.2.1可用"的标题表明这是一个关于JSON库的更新版本,具体为2.2.1版。在IT行业中,JSON库通常是一个编程语言中的工具,用于解析和生成符合JSON格式的数据。 描述中提到的"json-2.2.1"可能是指一个特定的Java ...

    C++解析json/socket通讯

    json j = json::parse(jsonString); // 访问JSON数据 std::string name = j["name"]; int age = j["age"]; std::string city = j["city"]; ``` 接下来,我们转向socket编程。在C++中,socket API主要包含在`...

    grib2转json(内附源码及架包)

    标题中的"grib2转json"是指将气象学中的GRIB2文件转换为JSON格式,以便于数据处理、分析或进一步的可视化。GRIB2是一种二进制文件格式,包含复杂的气象模型预测数据,如温度、湿度、风速等,它由世界气象组织(WMO)...

    Electron项目:读写本地json文件,实现用户登录、修改用户信息,窗口最小化,最大化,关闭窗口

    在本项目中,如果服务器不可用,用户修改的信息会先保存在本地JSON文件中。这可能涉及到查找特定用户的记录,更新相关字段,然后使用`fs.writeFile()`保存更改。 5. **窗口操作**: Electron提供API来控制应用窗口...

    json 转excel C# 源码 测试完善可用

    标题"json 转excel C# 源码 测试完善可用"表明这个压缩包包含了一个C#源码项目,能够将JSON数据转换为Excel,并且经过了充分的测试,可以处理各种大小的JSON数据,且能在短时间内完成转换。 描述中的“测试可用,秒...

    json2.js 亲测可用

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递...通过"亲测可用"的描述,我们可以确认这个解决方案在实际使用中是经过验证的,可以放心地在兼容性需求的项目中应用。

    HTML版JsonViewer

    6. **源码可用**:提供的压缩包文件"JsonViewer"包含了这个工具的源代码,这意味着你可以根据自己的需求对其进行定制,添加额外的功能,或者集成到自己的项目中。 为了使用JsonViewer,你需要有一定的HTML、CSS和...

    json2-min.js(亲测可用)

    `json2-min.js` 文件是一个针对JSON的JavaScript库,主要功能是为那些不支持原生JSON的旧版浏览器提供JSON的解析和序列化功能。 在JavaScript中,JSON主要用于数据传输,特别是在与服务器进行AJAX通信时。原生的...

    json.js:ES5 JSON 对象 polyfill

    在一些较旧的浏览器或不支持 ES5 特性的环境中,JSON 方法可能不可用,这时就需要使用像 json.js 这样的库来提供兼容性。 在 ES5 之前,JavaScript 并未内置对 JSON 的支持。开发者需要依赖第三方库,如 Douglas ...

Global site tag (gtag.js) - Google Analytics