JAVA 对象序列化为JSON时,如何做到有这个属性就处理,没有就跳过?比如,之前API,中传输对象为User,它包括了两个属性: public class User{
   private int id;
   private String name;    //GET SET 略
}
在和服务器交互时,传递的是User对象,采用的REST API,的JSON格式由于功能需求的演变,User对象需要增加一个属性age
 public class User{
   private int id;
   private String name;
   private int age;
   
   //GET SET 略
}
如果不处理的话,前期客户端(已经发布的产品)是不带age的,而服务器现在又升级为带age的
这样APi交互转换时,就会出现JSON转换异常下面处理可以忽略这个AGE属性
@JsonIgnoreProperties(ignoreUnknown = true)
 public class User{
   private int id;
   private String name;
   @JsonIgnore
   private int age;
   
   //GET SET 略
}
但是我新版本的客户端又使用的还AGE的对象,又需要这个属性数据
这个有什么方案吗?求有经验的人指点!谢谢了!
JavaJSONAPI

解决方案 »

  1.   

    User(Old)和User(New)之间通过JSON转换照理应该没问题啊,Old转为New时age默认为0;
    New转为Old时没有age属性;这其实是JSON的处理问题,我自己测试了一下是可以的,用的是net.sf.json
      

  2.   

    用google的gson框架吧!直接Gson gson = new Gson();
    String json = gson.toJson(user);就生成json了
      

  3.   

    若有特殊情况完全可以自己写一个转json的方法。json格式都是固定的
      

  4.   

    这种情况json框架是可以设置支持的
    具体的了解一下jackson或fastjson