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

JSON JavaBean 互转工具

    博客分类:
  • JSON
阅读更多

在json.org上面可以看到现在java方面的支持json的开源项目很多。

最近稍微看了下gson和json-lib,第一次使用印象如下:

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

  1. //json->java
  2.         String src =  "{\"date\":\"2008-10-25\",\"str\":\"sss\",\"i\":23,\"l\":333443,\"d\":1.23}" ;
  3.         Gson gson =  new  GsonBuilder().setDateFormat( "yyyy-MM-dd" ).create();
  4.         BeanA a = gson.fromJson(src, BeanA. class );

 

  1. //java->json
  2.         Gson gson =  new  GsonBuilder()
  3. //      .registerTypeAdapter(BeanA.class, new JsonSerializer<BeanA>(){
  4. //
  5. //
  6. //          public JsonElement serialize(BeanA src, Type typeOfSrc,
  7. //                  JsonSerializationContext context) {
  8. //              JSONObject obj = JSONObject.fromObject(src);
  9. //              JsonObject e =  new JsonObject();
  10. //              Iterator<String> its = obj.keys();
  11. //              while(its.hasNext()){
  12. //                  String key = its.next();
  13. //                  e.addProperty(key, obj.getString(key));
  14. //              }
  15. //              return e;
  16. //          }
  17. //          
  18. //      })
  19. //      .registerTypeAdapter(Object.class, new JsonSerializer<Object>(){
  20. //          public JsonElement serialize(Object src, Type typeOfSrc,
  21. //                  JsonSerializationContext context) {
  22. //              JSONObject obj = JSONObject.fromObject(src);
  23. //              JsonObject e =  new JsonObject();
  24. //              Iterator<String> its = obj.keys();
  25. //              while(its.hasNext()){
  26. //                  String key = its.next();
  27. //                  e.addProperty(key, obj.getString(key));
  28. //              }
  29. //              return e;
  30. //          }
  31. //          
  32. //      })
  33.         .create();
  34.         
  35.         BeanA a =  new  BeanA();
  36.         a.setD(Double.valueOf( "1.23" ));
  37.         a.setDate( new  Date());
  38.         a.setI(Integer.valueOf( 23 ));
  39.         a.setL(Long.valueOf( "333443" ));
  40.         a.setStr( "sss" );
  41.         
  42.         Map m =  new  HashMap();
  43.         m.put( "a" 1 );
  44.         m.put( "b" , 1l);
  45.         m.put( "c" true );
  46.         m.put( "d" "str" );
  47.         
  48.         Map mA =  new  HashMap();
  49.         mA.put( "bean" , a);
  50.         
  51.         Type mapType =  new  TypeToken<Map<String, String>>() { }.getType();
  52.         String rs = gson.toJson(m,mapType);
  53.         System.out.println(rs);
  54.         
  55.         Type mapTypeA =  new  TypeToken<Map<String, BeanA>>() { }.getType();
  56.         String rsA = gson.toJson(mA,mapTypeA);
  57.         System.out.println(rsA);
  58.         
  59.         Type mapTypeB =  new  TypeToken<BeanA>() { }.getType();
  60.         String rsB = gson.toJson(a,mapTypeB);
  61.         System.out.println(rsB);
  62.         
  63.         
  64.         Type mapTypeC =  new  TypeToken<Date>() { }.getType();
  65.         String rsC = gson.toJson( new  Date(),mapTypeC);
  66.         System.out.println(rsC);


不过它的代码是个学习jdk1.5中的泛型的好资料。

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


3、json-lib由于使用了ezmorph进行转换,其java.util.Date的转换方式已经实现了,只需要手动注册需要的转换的pattern即可。
 注册方法为:

  1.         JSONUtils.getMorpherRegistry().registerMorpher( new  DateMorpher( new  String[]{
  2.                  "yyyy-MM-dd HH:mm" ,
  3.                  "yyyy-MM-dd"
  4.         }));
  5.         // 然后调用json->bean的方法
  6.        Object a = JSONObject.toBean(JsonSrc);
  7.        //or
  8.        JSONSerializer.toJava( JsonSrc );
  9.                

4、从json-lib的框架结构来看,在jsonconfig中提供了较好的java->json转换的接口,而json->java中默认使用了ezmorph中的转换方法,并且没有在jsonconfig中进行体现,只是全局都使用了JSONUtils.getMorpherRegistry()进行处理。所以要注册json->java的转换方法,貌似只能通过以上方法 进行。

      
分享到:
评论
1 楼 jason_wu 2012-06-06  
从json字符串转成java中date类型的方法找了好久,终于看到了,多谢

相关推荐

    json、javaBean、xml互转的几种工具介绍

    这篇博客主要探讨了几种用于这些格式互转的工具,下面将详细介绍这些工具及其使用方法。 1. **Gson** (Google的JSON库) Gson是由Google提供的一个开源库,它可以将Java对象转换为JSON字符串,反之亦然。使用Gson,...

    javabean和json互转所需的6个包

    JavaBean和JSON之间的转换在Java开发中非常常见,特别是在处理前后端交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JavaBean则是一种符合...

    javabean和json互转所需包

    3. `commons-beanutils-1.7.0.jar`: Apache Commons BeanUtils 提供了简单而强大的JavaBean操作工具,可以便捷地读取和设置JavaBean的属性,这对于JSON转换来说至关重要。 4. `json-lib-2.3-jdk15.jar`: 这是`json-...

    javabean_map_string和json互转详细文档+例子

    JavaBean和Map以及String与JSON之间的转换在Java开发中是非常常见的操作。这涉及到Java对象的序列化和反序列化,通常用于数据交换...通过使用这些工具,你可以轻松地在Java对象和JSON格式之间进行切换,满足各种需求。

    通过fastjson实现各种格式与json之间的转换

    通过fastjson实现了JavaBean,list&lt;JavaBean&gt;,MAP,list等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar

    json_lib使用实例:java对象与json字符串的互转

    `json-lib`还提供了XML与JSON的互转功能,这对于需要在两者间切换的场景非常有用。 总结来说,`json-lib`是一个强大且易用的工具,它使得在Java中处理JSON变得简单。通过其提供的API,我们可以方便地进行JSON字符...

    javaBean 与 xml 互转

    在实际项目中,你可能会创建一个通用的工具类,包含上述方法,以便在任何需要JavaBean和XML互转的地方使用。在提供的`clientDemo`文件中,可能包含了这样的工具类示例,可以进一步研究和理解。 总结来说,JavaBean...

    java与json之间的互操作.pdf

    总结来说,JSON-lib是Java开发者处理JSON数据的强大工具,它可以方便地进行Java对象与JSON之间的转换,以及JSON与XML之间的互操作,简化了数据交换和处理的复杂性。在实际项目中,根据需求选择合适的版本和配置,...

    Java代码实现Map和Object互转及Map和Json互转

    总结一下,Map和Object互转以及Map和JSON互转是Java Web开发中常见的需求。前者可以通过反射、Apache Commons BeanUtils或者Introspector类来实现,而后者则可以使用专门的JSON处理库如Gson、Jackson或Fastjson。...

    java json api,json api

    4. **JSON与XML的互转**:`json-lib`还提供了将JSON数据转换为XML,反之亦然的功能,这对于需要在两者之间切换的应用非常有用。 5. **JSON解析和生成**:可以使用`JSONParser`解析JSON字符串到JSON对象,或者使用`...

    json解析包

    3. **XML与JSON的互转**:除了基本的JSON操作,Json-lib还支持XML与JSON之间的转换。这对于那些需要在XML和JSON之间切换的项目非常有用。 4. **自定义转换规则**:Json-lib允许开发者自定义转换规则,比如自定义...

    java与json之间的互操作[参照].pdf

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...无论是在网络通信、数据存储还是数据展示,JSON都是一个非常实用的工具,而JSON-lib则为Java开发者提供了强大的支持。

    java与json互相转换的jar包

    Java则是一种强大的后端编程语言,两者之间的互转能够帮助我们有效地处理数据。以下是对给定的jar包文件及其在Java与JSON转换中的作用的详细解释: 1. **json-lib-2.4-jdk15.jar.zip**:这是JSON库的核心,用于实现...

    json-lib及json-taglib包

    此外,`json-lib`还支持与其他数据格式(如XML)的互转,增强了数据交换的灵活性。 另一方面,`json-taglib`则是一个基于JSP标签库的JSON处理库,主要针对JSP开发,提供了一套简洁的标签来生成和解析JSON。`json-...

    json-lib包(Java解析JSON的所有依赖包)

    - **JSON与其他格式的互转**:可以将JSON对象转换为XML、HTML表单,也可以从这些格式还原为JSON。 - **JSON操作**:提供了添加、删除、修改JSON对象和数组元素的方法。 ### 示例代码 以下是一些使用`json-lib`处理...

    java与javascript之间json格式数据互转介绍

    Java与JavaScript之间的JSON格式数据互转是一个非常实用的技能,尤其是在Web开发中,前后端数据交互频繁。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,由于其简洁和易于理解的特性,在很多...

    jsonlib.zip

    此外,`json-lib`还支持XML与JSON的互转,以及自定义序列化和反序列化的规则,提供了丰富的功能来满足不同场景的需求。 总之,`json-lib`是一个强大的Java JSON处理库,通过依赖其他Apache Commons库,它可以方便地...

    json jar 包

    在JSON和Java对象互转时,这个库可以自动处理JavaBean的属性映射。 5. `ezmorph-1.0.3.jar`:EZMorph库提供了一种动态对象转换机制,可以将一种类型的对象转换为另一种类型。在处理JSON时,如果需要将JSON值转换为...

    数据库自动生成JavaBean对象

    下载了绝对不后悔,100%好用,支持Mysql Oracle SQL Server ,PostgreSQl.等数据库 还有各种集成的小工具 表名互转驼峰,,,,Json.XML 字符串格式化..JSon与XMl互转,String字符串拼接等功能

    jsonlib包jsonlib包

    5. **XML与JSON之间的转换**:Jsonlib还提供了XML与JSON之间的互转功能。这使得在处理XML数据时可以灵活地选择JSON作为中间格式,或者反之。 6. **JSON格式化与压缩**:Jsonlib提供了格式化JSON字符串(增加缩进、...

Global site tag (gtag.js) - Google Analytics