JSON转换为Java中具有类型属性的XML

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON转换为Java中具有类型属性的XML相关的知识,希望对你有一定的参考价值。

我正在将C#应用程序重写为Java代码。

[有返回json的REST API。我必须将json解析为XML,但是C#库和Java用不同的方式来解析它。

如何在Java中保持type =属性?我不能使用JAXB批注,因为响应中有太多对象,并且它们可能会改变。 XML.toString(jsonObject)对我不起作用。

C#解析以这种方式完成:

XDocument.load(JsonReaderWriterFactory.CreateJsonReader(Encoding.ASCII.GetBytes(jsonString), new XmlDictionaryReaderQuotas()));

C#结果:

<root type="object">   
  <Items type="array">
    <item type="object">
      <Name type="string">test</Name>
      <Total type="number">12.8000000</Total>
      <CurrencyCode type="string">CHF</CurrencyCode>
      <Country type="string">CH</Country>
    </item>   
  </Items> 
</root>

Java结果:

<root>
  <Items> 
    <item> 
      <Name>test</Name> 
      <Total>12.8000000</Total> 
      <CurrencyCode>CHF</CurrencyCode> 
      <Country>CH</Country>> 
    </item>   
 </Items>
</root>
答案

您可以尝试以下方法:

string filePath = "YourPath";

//Example json
string jsonString = @"{""root"":{""Items"":{""item"":{""Name"":""test"",""Total"":""12.8000000"",""CurrencyCode"":""CHF"",""Country"":""CH""}}}}";

XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonString);

doc.Save(filePath);

结果:

<root>
  <Items>
    <item>
      <Name>test</Name>
      <Total>12.8000000</Total>
      <CurrencyCode>CHF</CurrencyCode>
      <Country>CH</Country>
    </item>
  </Items>
</root>

以上是关于JSON转换为Java中具有类型属性的XML的主要内容,如果未能解决你的问题,请参考以下文章

在java中将带有命名空间的xml转换为json

JSON到XML与java中的类型属性

Java将XML类型的文本转换为JSON

将 JSON 转换为 XML

Json 解析错误:Java.lang.String 类型的值 <?xml 无法转换为 JSONArray [重复]

XML 到 JSON 的动态转换