【问题标题】:Java DeserializationJava反序列化
【发布时间】:2021-02-26 11:39:56
【问题描述】:

我有这样的 xml 响应

        <service>Service name</service>
        ...
        some fields
        ...
        <service>
            <min_amount>6</min_amount>
            <max_amount>1522</max_amount>
            <max_limit>3000</max_limit>
            <currency>USD</currency>
        </service>

我需要将其反序列化为 POJO

@JacksonXmlProperty(localName = "service")
private String service;

... some more fields ...

@JacksonXmlProperty(localName = "service")
private Service serviceObject;

但我得到 com.fasterxml.jackson.databind.JsonMappingException: Multiple fields表示属性“服务”,我该如何解决?

【问题讨论】:

  • 您的 xml 似乎没有正确缩进。第二个服务标签是否包含在某些东西中?
  • 第一个“服务”参数是基本字符串,第二个是 XML 类,它们都在同一范围内

标签: java jackson deserialization fasterxml


【解决方案1】:

您的 XML 响应的结构无效,因此可能无法正确映射它以进行(反)序列化。

您有两个标签名称相同 service ,但结构不同。

我假设您不是生成此 XML 的服务的所有者,但应该重命名此标记之一,或者应该为它们使用两个单独的命名空间。

【讨论】:

    【解决方案2】:

    您的 XML 响应不正确,因为您对两个不同的事物使用相同的标记名称。一个应该是 serviceName 例如

            <serviceName>Service name</serviceName>
            ...
            some fields
            ...
            <service>
                <min_amount>6</min_amount>
                <max_amount>1522</max_amount>
                <max_limit>3000</max_limit>
                <currency>USD</currency>
            </service>
    

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 1970-01-01
      • 2011-02-22
      • 2019-03-17
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2017-08-02
      相关资源
      最近更新 更多