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

JSON与javabean对象互换

阅读更多

 

http://code.google.com/p/google-gson/

 

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,它的建立方法也很简单

 

 

3
0
分享到:
评论

相关推荐

    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