3

我将 XML 请求字符串作为文本内容传入,但 Jackson 将其标识为 XML 标记。我尝试使用 JacksonXMLText 但这没有帮助。

<Reference>
  <Request><?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; ?><Quote 
  sess=&#34;JAKE_OSCAR_EU&#34; language=&#34;ENG&#34; Country=&#34;US&#34;> 
  </Quote> 
  </Request>
</Reference>

它让我异常

com.ctc.wstx.exc.WstxParsingException: Illegal processing instruction target ("xml"); xml (case insensitive) is reserved by the specs.
4

1 回答 1

1

我认为您需要编写一个客户反序列化器来读取您想要读取 Raw 的那部分树。这是一个示例实现:

@JsonSerialize(using = RawObjectSerializer.class)
@JsonDeserialize(using = RawObjectDeserializer.class)
public class RawObject {

    public final String value;

    public RawObject(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}

公共类 RawObjectDeserializer 扩展 StdDeserializer {

public RawObjectDeserializer() {
    super(RawObject.class);
}

    @Override
    public RawObject deserialize(JsonParser parser, DeserializationContext context) throws IOException {
        return new RawObject(parser.getCodec().readTree(parser).toString());
    }
}

https://dolzhenko.me/blog/2017-08-13-raw-jackson

于 2018-08-28T14:20:46.020 回答