【问题标题】:Why is the JSON content property treated special when converted to XML?为什么 JSON 内容属性在转换为 XML 时会被特殊对待?
【发布时间】:2017-06-25 03:31:24
【问题描述】:

我正在使用 org.json 库中可用的转换函数将 json 转换为 xml。这样做非常简单。

String xmlStr = XML.toString(new JSONObject(jsonStr));

一切都很完美,直到我需要处理一些包含这样的内容属性的 json。

{
    "content": "X",
    ...
}

我希望这会转换为

<content>X</content>

但它会转换为没有开始和结束标签的简单 X。所以我检查了 XML.toString 的源代码,并且“内容”被特殊对待。代码中的注释说明了这一点。

// Emit content in body

我在 Google 上搜索过,也找到了这个。

Content text may be placed in a "content" member

但是我找不到关于这一切的解释。目的是什么?为什么有人希望以特殊方式对待它?另外,如果您能指出一个很好的解释,那将很有帮助。

【问题讨论】:

    标签: java json xml data-conversion org.json


    【解决方案1】:

    underscore-java 库和静态方法 U.jsonToXml(json)。它支持content 键名。我是项目的维护者。

    {
        "content": "X"
    }    
    

    输出:

    <?xml version="1.0" encoding="UTF-8"?>
    <content>X</content>    
    

    【讨论】:

      【解决方案2】:

      这似乎是一个非最佳实施决策。最近的讨论发生在 org.json 问题#394

      “content”是 XML Java 转换中不幸命名的关键字。有关此问题的历史,请参阅#344、#286 和#108。有关关键字如何工作的更多信息,请参阅https://github.com/stleary/JSON-Java-unit-test 中的 XMLTest.java contentOperations()。

      如果有人想按照 #108 的思路提出解决方法,或者任何其他不会破坏现有应用程序的方法,则不反对。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-22
        • 1970-01-01
        • 1970-01-01
        • 2021-10-26
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多