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

将JSON解析为自定义POJO,该POJO将Map作为其类成员之一

桂志诚
2023-03-14

我有下面的JSON,我想解析到下面的bean类。

{
    "timeStamp": "123123123123",
    "pznFlowFlag": "true",
    "pznRequestFlag": "true",
    "sessionId": "SampleSessionId",
    "ipAddress": "172.148.0.1",
    "offers": [
    {
            "111": {
                "eep" : "44279",
                "spl_ind" : "true"},
            "121": {
                "eep" : "44520",
                "spl_ind" : "false"},
            "333": {
                "eep" : "45419",
                "spl_ind" : "false" }
    }]
}

豆类 1

public class DistributedCookieBean {

    @JsonProperty("timeStamp")
    private String timeStamp;

    @JsonProperty("pznFlowFlag")
    private String pznFlowFlag;

    @JsonProperty("pznRequestFlag")
    private String pznRequestFlag;

    @JsonProperty("sessionId")
    private String sessionId;

    @JsonProperty("ipAddress")
    private String ipAddress;

    @JsonProperty("offers")
    private Map<String, OfferCookieBean> offers = new HashMap<String, OfferCookieBean>();

...<setters & getters>
}

Bean类2

public class OfferCookieBean {

    @JsonProperty("eep")
    private String eep;

    @JsonProperty("spl_ind")
    private String spl_ind;

...<setters & getters>
}

在这里,我无法使用下面的代码解析这些JavaPOJO。

jsonObjMapper.readValue(jsonString,DistributedCookieBean.class);

堆栈跟踪:

org . code Haus . Jackson . map . jsonmappingexception:无法从START_ARRAY标记反序列化java.util.Map的实例,该标记位于[Source:JSON . txt;行:6列:31]at org . code Haus . Jackson . map . jsonmappingexception . from(jsonmappingexception . Java:159)at org . code Haus . Jackson . map . deser . stddeserializationcontext . mapping exception(stddeserialization context . Java:192)at org . code Haus . Jackson . map . deser . map deserializer . deserialize(map deserializer . Java:134)at org . code Haus . Jackson . map . desert . map . deser . map deserializer

提前致谢!

共有1个答案

柯耀
2023-03-14

错误消息指出了问题所在:< code>offers字段被声明为一个map,而在JSON中它是一个map数组

尝试更改地图

 类似资料:
  • 我正在尝试将JSON转换为POJO类。这个JSON是我从第三方REST API调用得到的,我想把它转换成POJO类。为此,我使用jackson databind jar,下面是我代码的一部分。 这里现在不是POJO类,我声明了Object类型的ModelObjcet变量,我的问题是我们是否需要在将JSON转换为POJO之前创建带有必填字段和getter setter方法的POJO类? 如果是,那么

  • 问题内容: 我的样子如下: 现在,每个元素具有相同的结构(假设一个POJO称为MessageDefault.java)。那么我怎么能把所有东西都当作一个??呢? 我正在使用gson进行解析。我也不能更改JSON响应。 编辑:: MessageDefault.java 它只是一切的结构。但是在JSON中,的每个子项都有不同的名称,例如POJO MessageDefault.java中所反映的名称。但

  • 我试图将一个对象转换为json格式,但它不起作用(我得到一个奇怪的堆栈溢出异常)。它从对象到XML都能完美地工作。我有一个简单的实体类User和另一个具有多个关系的类。 相关类 我将@XmlTransient注释放在我想要忽略的getter上。 下面是我的rest服务中的一个方法,它从用户的昵称返回用户 因此,它使用@products({“application/xml”})而不是@product

  • 问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。

  • 这可能吗?我想将JSON反序列化到POJO结构中,但除此之外,还要在POJO(或子POJO)中保存原始JSON的副本。例如,假设我有以下结构: 现在我有一套简单的两个POJO: 除了正确设置pojo字段之外,是否还可以使用类的完整JSON设置中的? 虽然我可以用自定义方法重新创建它,但我没有映射的任何额外JSON字段都会丢失,我想保留这些字段以用于异常日志记录(即,我需要上游系统发送的原始JSON

  • 我正在使用GSON解析一个JSON文件,并希望将这个JSON对象映射到一个POJO类。问题是JSON中的属性名没有camel-case,但我的java POJO对象具有camel-case属性名。 有没有任何想法没有任何表现打击? 例如:JSON文件中的属性名是'ordernumber',但在我的POJO类中,我用'Sales Number'作为属性名,而不是ordernumber。现在,我们如何