当前位置: 首页 > 知识库问答 >
问题:

序列化 pojo 到不同的 json 结构

谢唯
2023-03-14

我需要将一个pojo序列化成不同的json结构,这取决于我发送请求的对象。此外,我应该能够在一些配置中配置pojo字段如何映射到给定请求的json属性。

这可以用杰克逊来实现吗?是否有一些库或API可以做到这一点?

编辑:例如:

public class Universal {
    private int id;
    private Date date;
    private String name;
    private Inner inner;
    private Map<String,Object> others;
    private List<Inner> inners;

}
public class Inner {
    private String value;
}

上面是我创建动态json需要的两个对象,下面是一些转换的例子

{ 
  "id":"",//value will be  id of Universal
  "detials":{
       "name":"",//value will be name of Universal
   },
   "data":[], // array of value(field of Inner) from inners 
   "ext":{
      "prop1":""// value of this field will be some (key1) value from others 
    } 
}

共有1个答案

令狐运珧
2023-03-14

您可以使用Google Gson并依赖其类型适配器

http://www.javacreed.com/gson-typeadapter-example/是一篇来自网络的好文章

 类似资料:
  • 当返回类型为时,我创建了一个REST服务,该服务可以正常工作,但当我指定时,我会收到以下错误消息: 找不到应用程序的messagewriter=json/bodytype=json。util。ArrayList,genericType=java。util。列表 我已经尝试过了:添加jersey media jackson和jersey jackson moxy,但没有成功。 环境:我使用Glass

  • 问题内容: 我有一个像这样的POJO,我正在使用GSON序列化为JSON: 这是我的做法: 现在我的json将是这样的: 现在我的问题是:有什么办法可以代替更改变量名呢?在Gson中,我可以在变量顶部使用任何注释吗? 我想要这样的东西: 问题答案: 您可以使用@SerializedName(“ client_id”) 编辑: 您也可以使用它,以通用方式更改所有字段

  • 问题内容: 是否可能:在类中有一个字段,而在Jackson库中进行序列化/反序列化时却为其使用不同的名称? 例如,我有“ Coordiantes”类。 对于从JSON反序列化,希望具有以下格式: 但是当我序列化对象时,结果应该是这样的: 我试图通过在getter和setter上都应用注释(具有不同的值)来实现此目的: 但我有一个例外: org.codehaus.jackson.map.exc.Un

  • 问题内容: 我正在使用大猩猩 websocket,并且正在计划使用json进行序列化/反序列化。 假设我有这样的结构来接收传入的消息: 和 大猩猩提供接收传入的消息。传入的消息可以是Foo或Bar,但是我不能使用和收听其他消息,这很混乱。我想要像javascript 这样的东西。如果接收到Foo,则如何处理传入消息,然后将其存储到结构中;如果接收到Bar,则将其存储到结构中? 我正在解决方案正在使

  • 下面是从外部方接收的JSON字符串。 问题是我不喜欢类中的类名和字段名。相反,我希望将其命名为,并且将从字段名称中删除,并给出正确的名称。 我可以将重命名为,但如果更改字段名(类中的),它将无法正确反序列化,并给我。我怎样才能克服这些呢?

  • 使用GSON如何将列表的类名附加到输出的json字符串中?我已经浏览了api,但没有找到任何与此相关的参考资料。我在真实代码中使用了GsonBuilder,但也没有看到任何选项。 这将提供以下输出: json=[{“name”:“Alice”},{“name”:“Bob”}] 如何实现以下输出?或者类似的东西。 json={"人":[{"名字":"爱丽丝"},{"名字":"鲍勃"}]} 或 jso