Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将XML转换为JSON,与FasterXML一起使用的jaxb类存在问题_Java_Json_Xml_Xml Parsing - Fatal编程技术网

Java 将XML转换为JSON,与FasterXML一起使用的jaxb类存在问题

Java 将XML转换为JSON,与FasterXML一起使用的jaxb类存在问题,java,json,xml,xml-parsing,Java,Json,Xml,Xml Parsing,我需要在运行时使用FasterXML将XML转换为JSON,并使用源XSD从JAXB工具xjc生成bean 我正在使用以下代码 public static void main(String[] args) { try { Testing tObj=new Testing(); ObjectMapper tester=tObj.createJaxbObjectMapper(); CustomerOrder

我需要在运行时使用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]

com.fasterxml.jackson.core.JsonParseException:意外字符(“现成的XML-to-JSON转换器永远不会为您的特定应用程序提供最佳输出。您通常需要应用一些预处理(使用XSLT的XML转换)或JSON的一些后处理


在这种情况下,我建议进行XSLT转换以删除名称空间。

现成的XML到JSON转换器永远不会为您的特定应用程序提供最佳输出。您通常需要应用一些预处理(使用XSLT的XML转换)或JSON的一些后处理


在本例中,我建议执行XSLT转换以删除名称空间。

看起来您使用的是lib,它非常轻量级,并且不提供从解析的XML标记名中跳过名称空间的可能性

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

更新 要将
字符串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);

看起来您正在使用lib,它非常轻量级,不提供从解析的XML标记名中跳过名称空间的可能性

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

更新 要将
字符串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);

那是我最初计划做的。。但是在详细查看了源XSD之后,我需要一个更强大的库,现在我将尝试使用FasterXML。感谢我最初计划这么做的。。但是在详细查看了源XSD之后,我需要一个更强大的库,现在我将尝试使用FasterXML。谢谢,那里是一个全新的世界。如果需要一些帮助,我已经更新了FasterXML的问题,JAXBI尝试使用上述代码,但是自定义复杂类型存在一些问题。因此,我必须使用常规jaxb api将流转换为POJO。我能够使用常规ObjectMapper正确地生成json。谢谢你的帮助,那里是一个全新的世界。如果需要一些帮助,我已经更新了FasterXML的问题,JAXBI尝试使用上述代码,但是自定义复杂类型存在一些问题。因此,我必须使用常规jaxb api将流转换为POJO。我能够使用常规ObjectMapper正确地生成json。谢谢你的帮助。我用一个转换序列的例子更新了答案。我用一个转换序列的例子更新了答案。