`
zpball
  • 浏览: 910377 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSON与javabean对象互换

阅读更多
[url]http://code.google.com/p/google-gson/ [/url]



http://json-lib.sourceforge.net/index.html



json-lib使用了ezmorph进行对象之间的转换,已经实现了基本类型的转换支持。基本使用上手较快。

需要下面JAR 包

jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1



boolean[] boolArray = new boolean[]{true,false,true};   
JSONArray jsonArray = JSONArray.fromObject( boolArray );   
System.out.println( jsonArray );   
// prints [true,false,true]  

 
List list = new ArrayList();      
list.add( "first" );      
list.add( "second" );      
JSONArray jsonArray = JSONArray.fromObject( list );      
System.out.println( jsonArray );      
// prints ["first","second"]   


 
  
JSONArray jsonArray = JSONArray.fromObject( "['json','is','easy']" );   
System.out.println( jsonArray );   
// prints ["json","is","easy"]  


From Beans & Maps to JSON
 
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 jsonObject = JSONObject.fromObject( map );      
System.out.println( jsonObject );      
// prints ["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){ return this.arr[i]; }]   

 
 
class MyBean{      
   private String name = "json";      
   private int pojoId = 1;      
   private char[] options = new char[]{'a','f'};      
   private String func1 = "function(i){ return this.options[i]; }";      
   private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");      
     
   // getters & setters      
   ...      
}      
     
JSONObject jsonObject = JSONObject.fromObject( new MyBean() );      
System.out.println( jsonObject );      
/* prints     
  {"name":"json","pojoId":1,"options":["a","f"],     
  "func1":function(i){ return this.options[i];},     
  "func2":function(i){ return this.options[i];}}   


 



From JSON to Beans

 String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";      
JSONObject jsonObject = JSONObject.fromObject( json );      
Object bean = JSONObject.toBean( jsonObject );      
assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) );      
assertEquals( jsonObject.get( "bool" ), PropertyUtils.getProperty( bean, "bool" ) );      
assertEquals( jsonObject.get( "int" ), PropertyUtils.getProperty( bean, "int" ) );      
assertEquals( jsonObject.get( "double" ), PropertyUtils.getProperty( bean, "double" ) );      
assertEquals( jsonObject.get( "func" ), PropertyUtils.getProperty( bean, "func" ) );      
List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );      
Assertions.assertListEquals( expected, (List) PropertyUtils.getProperty( bean, "array" ) );  
 

  
 String json = "{bool:true,integer:1,string:\"json\"}";      
JSONObject jsonObject = JSONObject.fromObject( json );      
BeanA bean = (BeanA) JSONObject.toBean( jsonObject, BeanA.class );      
assertEquals( jsonObject.get( "bool" ), Boolean.valueOf( bean.isBool() ) );      
assertEquals( jsonObject.get( "integer" ), new Integer( bean.getInteger() ) );      
assertEquals( jsonObject.get( "string" ), bean.getString() ); 
  

 



gson 提供了一个JSON <-->JavaBean相互转换的框架,采用了java中的reflect,同时类型转换要求比较严格, 如果是图方便最好还是用json-lib。第一眼就没看出来怎么用,后来才发现:



Gson是google自己写的一个Java对象与JSON相互转化的工具包.它轻巧简便,易于使用,而且有很完备的文档可供查询,不用多说,当然是开源喽.

List<List<Map<String, String>>>类型的java对象obj转化为json的格式,你可以这么写 Gson gson = new Gson;  
        
String json = gson.toJson(obj, new TypeToken<List<List<Map<String, String>>>(){}.getType());// to Json   
         List<List<Map<String, String>>> obj2 = gson.from(obj, new TypeToken<List<List<Map<String, String>>>(){}.getType());// from json  
 

Gson这个类是其中的关键,它负责来进行转化java对象和json.将对象转化为json的格式,使用方法toJson(),这个方法有几个不同的用法.对于比较简单的对象,比如一个数组,或者一个list,你可以只将要转化的java对象作为参数,可以如果你的对象的格式蛮复杂,那么,你就需要另一个参数来描述一个java对象的结构,这另一个参数可以是Type或者是Class,它的建立方法也很简单

分享到:
评论

相关推荐

    xml与json、javabean的互相转换

    在Java开发中,有时我们需要将XML转换为JSON,反之亦然,或者将这些格式与JavaBean对象进行互换,以便于数据处理和传输。本篇文章将深入探讨XML、JSON与JavaBean之间的转换方法。 首先,我们来看XML和JSON的特性。...

    JSON与JAVA数据的相互转换.pdf

    通过JSON库,如net.sf.json,我们可以方便地在Java对象和JSON字符串间进行互换,从而实现数据的序列化和反序列化。在处理复杂结构时,尤其是嵌套的对象和数组,需要特别注意类型转换和可能出现的类型匹配问题。

    JSON_ajax笔记1

    3. **Map和JSON的互换**:JSON对象与Java的Map对象有很高的相似性,可以将Map转换为JSON对象,也可以将JSON对象解析为Map。 在实际开发中,JSON与AJAX(Asynchronous JavaScript and XML)结合使用,允许Web应用在...

    json lib net.sf.json使用的所有jar包

    3. **commons-beanutils-1.8.3.jar**:Apache Commons BeanUtils库简化了JavaBean对象的属性访问,它能帮助将JavaBean的属性值与JSON对象的键值对进行映射,从而实现JSON与Java对象的互换。 4. **commons-lang-2.1....

    json解析包

    JSON(JavaScript Object Notation...总的来说,这个"json解析包"是一个方便的工具,能够帮助开发者轻松地在Java应用程序中处理JSON数据,无论是进行对象与JSON的转换,还是XML与JSON之间的互换,都能提供强大的支持。

    JSON-lib

    前者将JSON对象转化为指定类型的JavaBean,后者将JSON数组转化为指定类型的List。 6. **自定义转换规则**:在处理复杂的对象结构时,可能需要自定义转换规则。JSON-lib允许通过实现`JsonConfig`接口并设置转换策略...

    java与json之间的互操作.pdf

    在Java开发中,JSON常用于数据传输和存储,因为它能够很好地与Java对象进行互换。JSON-lib是一个Java库,它提供了方便的API来处理JSON和XML之间的转换。 1. JSON-lib的功能: - 将Java对象转换为JSON格式的字符串...

    java servlet json依赖包

    Java Servlet与JSON(JavaScript ...开发者可以根据项目需求选择合适的库来实现JSON与Java对象的互换,从而提升开发效率和代码质量。在实际使用中,这些依赖包可以很好地支持JSON在Java Servlet环境中的各种应用场景。

    java json 所需的6个包

    - commons-beanutils-x.x.x.jar:Json-lib依赖Apache Commons BeanUtils库来处理JavaBean对象。 - commons-collections-x.x.x.jar:依赖Apache Commons Collections库,用于集合操作。 - commons-lang-x.x.x.jar...

    JSON_ajax笔记2

    - JavaBean和JSON的互换:可以使用Gson或Jackson库将JavaBean对象转换成JSON字符串,反之亦然。 - List和JSON的互换:将List对象转换成JSON数组,或者将JSON数组解析成List。 - Map和JSON的互换:将Map对象转换成...

    json-lib全部相关jar及例子

    json-lib是一个广泛使用的开源Java库,它允许Java对象与JSON格式进行互换。 在Java开发中,json-lib提供了多种JSON解析器,可以将Java对象转换为JSON字符串,反之亦然。这对于在服务器端处理HTTP请求或响应时非常...

    jsonlibs.jar

    通过简单的API,开发者可以轻松地实现JSON与Java对象的互换。 2. **json-lib-2.2.2-jdk15.jar**:这是一个多兼容性的JSON库,支持多种JVM环境,如JDK1.5。Json-lib提供了多种语言的JSON处理方式,如Java、.NET等。...

    json核心包.zip

    - **与其他数据结构的互换**:json-lib允许开发者将JSON数据转换为Java中的各种数据结构,如JavaBean、Map、List等,反之亦然。这对于在Java应用程序中处理来自服务器或客户端的JSON数据非常有用。 - **错误处理**...

    JS和JAVA使用JSON方法解析Word版.pdf

    这个库提供了一系列的API,使得Java对象能够与JSON进行互换。在使用`json-lib`之前,需要在项目中引入对应的依赖,如在Maven项目中添加以下依赖: ```xml &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-...

    json基础文档

    而Gson则是一种强大的Java库,用于在Java对象和JSON数据之间进行互换。 - **总结**: - JSON是Android SDK官方的库,主要用于客户端开发。 - GSON适用于服务端开发。 - GSON比JSON功能更强大,支持更多的特性。 ...

    json jar包

    它的功能包括解析JSON字符串,将Java对象序列化为JSON,以及JSON与XML之间的互换。 6. **ezmorph-1.0.6.jar**:EZMorph库提供了一种简单的方式来转换Java对象,对于JSON数据的转换和适应性处理可能很有帮助。 7. *...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

Global site tag (gtag.js) - Google Analytics