importcom.alibaba.fastjson.JSON;
  importcom.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;
  importcom.alibaba.fastjson.serializer.JSONSerializerMap;
  importcom.alibaba.fastjson.serializer.SerializerFeature;
    
  privatestatic final SerializeConfig   config;
  static{
      config = newSerializeConfig();
      config.put(java.util.Date.class,newJSONLibDataFormatSerializer());
      config.put(java.sql.Date.class,newJSONLibDataFormatSerializer());
  }
    
  privatestatic final SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, 
          SerializerFeature.WriteNullListAsEmpty,
          SerializerFeature.WriteNullNumberAsZero,
          SerializerFeature.WriteNullBooleanAsFalse,
          SerializerFeature.WriteNullStringAsEmpty
                                                    };
    
    publicstatic String toCompatibleJSONString(Object object) {
      returnJSON.toJSONString(object, config, features);
  }
  </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>  
通过上面代码中的toCompatibleJSONString方法,你就可以实现完全兼容json-lib了。
  反序列化
  反序列化就是把JSON格式的文本转化为Java Bean对象。
  指定Class信息反序列化
  通过指定类型信息,可以很方便的将"JSON文本"反序列化为"Java Bean"对象,例如:
                |   String text = ...; 
 Color color = JSON.parseObject(text, Color.class);
   </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>   类型集合的反序列化这个接口类似于parseObject               |   String text = ...; 
 List<User> users = JSON.parseArray(text, User.class);
   </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>   泛型的反序列化如果你需要返回一个带泛型的对象,例如List<User>、Map<String, User>,你可以使用TypeReference来传入类型信息。               |   String text = ...; 
 Map<String, User> userMap = JSON.parseObject(text, newTypeReference<Map<String, User>>() {});
   </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>   组合类型集合的反序列化比如在网络协议中,经常会存在这样的组合:               |   [{}]
   </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>   fastjson对这种结构的反序列化有专门支持。               |   String text = ...; 
 Type[] types = newType[] {Header.class, Body.class};
 List<Object> list = JSON.parseArray(text, types);
 Header header = (Header) list.get(0);
 Body body = (Body) list.get(1);
   </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>   使用@JSONCreator来指定构造函数来创建对象如果你的JavaBean没有缺省构造函数,可以使用@JSONCreator来指定构造函数               |   publicstaticclassEntity {
     privatefinalintid;
     privatefinalString name;
       @JSONCreator
     publicEntity(@JSONField(name = "id")intid,@JSONField(name = "name") String name){
         this.id = id;
         this.name = name;
     }
       publicintgetId() { returnid; }
     publicString getName() { returnname; }
 }
   </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>   把JSON文本反序列化为一个原型接口              |   publicstaticinterfaceBean {
     intgetId();
       voidsetId(intvalue);
       String getName();
       voidsetName(String value);
 }
   String text = "{\"id\":123, \"name\":\"chris\"}";
 Bean bean = JSON.parseObject(text, Bean.class);
   Assert.assertEquals(123, bean.getId());
 Assert.assertEquals("chris", bean.getName());
 bean.setId(234);
 Assert.assertEquals(234, bean.getId());
 
 
 
 
 
 
 
 
 
 
 出自:
 
   </div>  </td>  </tr>  </tbody>  </table>  </div>  </div>  </div>  </div>
 
                 本文由用户jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。 转载本站原创文章,请注明出处,并保留原始链接、图片水印。  本站是一个以用户分享为主的开源技术平台,欢迎各类分享! |  |  |  |  |  |  |