gpt4 book ai didi

java - 将 XML 转换为 JSON,与 FasterXML 一起使用的 jaxb 类出现问题

转载 作者:行者123 更新时间:2023-12-02 02:17:11 26 4
gpt4 key购买 nike

我需要在运行时使用 FasterXML 将 XML 转换为 JSON,并使用源 XSD 从 JAXB 工具 xjc 生成 bean。

我正在使用以下代码

 public static void main(String[] args) {
try {


Testing tObj=new Testing();
ObjectMapper tester=tObj.createJaxbObjectMapper();
CustomerOrderType data=tester.readValue(TEST_XML_STRING, CustomerOrderType.class);
//ObjectMapper serializr=new ObjectMapper();
//serializr.writeValue(System.out, data);


} catch (Exception je) {
System.out.println(je.toString());
}
}

public ObjectMapper createJaxbObjectMapper()
{
final ObjectMapper mapper = new ObjectMapper();
final TypeFactory typeFactory = TypeFactory.defaultInstance();
final AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(typeFactory);
// make deserializer use JAXB annotations (only)
mapper.getDeserializationConfig().with(introspector);
// make serializer use JAXB annotations (only)
mapper.getSerializationConfig().with(introspector);
return mapper;
}

但是我收到如下错误。

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: (String)"<ns1:orderDetail xmlns:ns1="http://www.colt.net/xml/ns/webservice/manord/v1.0"><ns7:Customer_Order_Status xmlns:ns7="http://www.colt.net/xml/ns/cbe/ord/v1.0">New</ns7:Customer_Order_Status><ns8:Order_Creation_Date xmlns:ns8="http://www.colt.net/xml/ns/cbe/ord/v1.0">2018-03-06T09:03:25</ns8:Order_Creation_Date><ns9:Opportunity_Number xmlns:ns9="http://www.colt.net/xml/ns/cbe/ord/v1.0">8798</ns9:Opportunity_Number><ns10:Order_Source xmlns:ns10="http://www.colt.net/xml/ns/cbe/ord/v1.0">eOrder Lite<"[truncated 9232 chars]; line: 1, column: 2]

最佳答案

您似乎正在使用 JSON-java lib,它非常轻量级,并且不提供从解析的 XML 标记名称中跳过命名空间的可能性。

但这可以使用更高级的 XML/JSON 处理库来实现,例如 FasterXML/Jackson .

更新

要将 String xml 转换为 Json:

1) 使用com.fasterxml.jackson.dataformat:jackson-dataformat-xml lib依赖项。

2) 转换顺序类似于:

XmlMapper xmlMapper = new XmlMapper();
MyObject myObj = xmlMapper.readValue(xml, MyObject.class);

ObjectMapper jsonMapper = new ObjectMapper();
String json = jsonMapper.writeValueAsString(myObj);

System.out.println(json);

关于java - 将 XML 转换为 JSON,与 FasterXML 一起使用的 jaxb 类出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49150049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com