Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 org.json.XML将json转换为XML转换为json失败_Java_Xml_Json_Scala - Fatal编程技术网

Java org.json.XML将json转换为XML转换为json失败

Java org.json.XML将json转换为XML转换为json失败,java,xml,json,scala,Java,Xml,Json,Scala,我在scala工作,但可以接受java解决方案。 我一直在使用org.json将我的json api转换为xml,这样一个古怪的客户端(基于VB4,不愿意更改)就可以使用我的xml api 简单的json到xml转换工作正常。问题是我可能需要能够来回转换它,而org.json似乎不能正确地来回转换 乙二醇 转换为: <a></a> 因此org.json将空字符串转换为空标记,将空标记转换为空对象。我的代码如下: object XmlSerializer { def

我在scala工作,但可以接受java解决方案。

我一直在使用org.json将我的json api转换为xml,这样一个古怪的客户端(基于VB4,不愿意更改)就可以使用我的xml api

简单的json到xml转换工作正常。问题是我可能需要能够来回转换它,而org.json似乎不能正确地来回转换

乙二醇

转换为:

<a></a>
因此org.json将空字符串转换为空标记,将空标记转换为空对象。我的代码如下:

object XmlSerializer {
  def toXml(json:String) = {
    val jsonObj = new JSONObject(json)
    val xmlString = XML.toString(jsonObj)

    xmlString
  }

  def fromXml(xml:String) = {
    val jsonObj = XML.toJSONObject(xml)
    val jsonString = jsonObj.toString

    jsonString
  }
}

是我遗漏了什么,还是org.json.XML转换不够聪明?似乎可以使用类型属性来保证转换回正确的类型

问题在于,JSON API在读取以下内容时假定为空集:

<a></a>
输出:

JSON to XML: <a> </a>
XML back to JSON: {"a":""}
JSON到XML:
XML返回到JSON:{“a”:“”}

只有在假设json{“a”:“}永远不会出现的情况下,这才有效。另外{“a”:[“b”]}将转换回{“a”:“b”},因为xml b与单个项相同。
<a></a>
val INPUT_JSON = "{ \"a\" : \"\" }";
var input = INPUT_JSON.replaceAll("\"\"", "\" \"");
var jsonObj = new JSONObject(input);
var xmlString = XML.toString(jsonObj);
println("JSON to XML: " + xmlString);

var xmlJSONObj = XML.toJSONObject(xmlString);
var jsonOutputString = xmlJSONObj.toString();
println("XML back to JSON: " + jsonOutputString);
JSON to XML: <a> </a>
XML back to JSON: {"a":""}