【问题标题】:JSON Unmarshalling javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:JSON解组javax.xml.bind.UnmarshalException:意外元素(uri:“”,本地:
【发布时间】:2016-08-09 09:03:59
【问题描述】:

我正在尝试将 JSON 解组为 Java 对象。我看过很少有关于解析 XML 的帖子。所以我希望问题不会重复

我的 Java 类有以下注释

@XmlRootElement(name = "cpResponse")
public class CPResponse {

我正在使用来自 cxf-rt-rs-extension-providers - 版本 - 2.7.3 的 org.apache.cxf.jaxrs.provider.json.JSONProvider

我收到以下错误

javax.xml.bind.UnmarshalException: 意外元素 (uri:"", 本地:“cpResponse”)

【问题讨论】:

  • 我猜您正在使用 Jettison,请发布您的 JSON 以查看元素。您收到内容类型的应用程序/json 了吗?看来您正在接收 XML
  • 你是对的@ArK。问题出在 Jettison Library 1.3.x 版本上。我降级到 1.2,问题得到解决。

标签: java json jaxb cxf


【解决方案1】:

我无法查看 java 映射器类。 对于要映射的json中的每个字段,在Java Mapper Class中定义getter和setter。您可以从json读取数据到java pojo,如下所示: 使用 jackson-databind-2.0.0 api,您可以使用以下代码

ObjectMapper mapper = new ObjectMapper();
JsonMapperVO jsonMapperVO = mapper.readValue(jsonString.toString(), JsonMapperVO.class);

【讨论】:

    【解决方案2】:

    这可能是命名空间问题。您能否将命名空间设置为 "" ? :

    @XmlRootElement(name = "cpResponse", namespace = "")
    public class CPResponse {
    

    【讨论】:

    • 我按照你的建议试过了,但没有改变。我得到了同样的例外。如果我只去@客户端或者也应该改变@服务器端就足够了吗?
    【解决方案3】:

    问题出在 Jettison Library 1.3.x 版本上。我降级到 1.2,问题得到解决。

    不涉及其他代码更改。

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多