【问题标题】:Libraries to convert xml into JSON and vice versa将 xml 转换为 JSON 的库,反之亦然
【发布时间】:2010-05-26 20:24:08
【问题描述】:

我需要将一个 xml 格式的文档转换为 JSON,反之亦然。

我相信这是一个常见的要求,也许还有一个库可以做到这一点。

知道吗?

【问题讨论】:

  • 好问题 (+1)。有关将访问 JSON 直接从 XSLT 转换为 XML 的可用 XSLT 解决方案,请参阅我的答案。
  • @nabo:用 C# 编写有关系吗?如果它是用 VB.NET 编写的,但您可以从 C# 或任何其他 .NET 语言调用它会怎样?
  • @John Saunders - 你说得对,我将删除 C# 标签。它可以是任何语言,因为我可以导入一个 dll 以在 C# 中使用。
  • @nabo:我已经编辑删除了“C#”。这只是一个“提醒”,所以你知道最好不要这样做。

标签: xml json xslt


【解决方案1】:

不是 C#,而是纯 XSLT 2.0 实现,可将 JSON 对象转换为 XML 文档:

看看f:json-document() 来自FXSL 2.x library

使用这个函数可以非常容易地合并 JSon 并将其用作... XML。

例如,只需编写以下 XPath 表达式:

f:json-document($vstrParam)/Students/*[sex = 'Female']

并且sex = 'Female'获取Students的所有子节点

这是完整的示例:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:f="http://fxsl.sf.net/"
 exclude-result-prefixes="f xs"
 >
 <xsl:import href="../f/func-json-document.xsl"/>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vstrParam" as="xs:string">
{

  "teacher":{
    "name":
      "Mr Borat",
    "age":
      "35",
    "Nationality":
      "Kazakhstan"
             },


  "Class":{
    "Semester":
      "Summer",
    "Room":
      null,
    "Subject":
      "Politics",
    "Notes":
      "We're happy, you happy?"
           },

  "Students":
    {
      "Smith":
        {"First Name":"Mary","sex":"Female"},
      "Brown":
        {"First Name":"John","sex":"Male"},
      "Jackson":
        {"First Name":"Jackie","sex":"Female"}
    }
    ,


  "Grades":

    {
      "Test":
      [
        {"grade":"A","points":68,"grade":"B","points":25,"grade":"C","points":15},

        {"grade":"C","points":2, "grade":"B","points":29, "grade":"A","points":55},

        {"grade":"C","points":2, "grade":"A","points":72, "grade":"A","points":65}
       ]
    }


}
 </xsl:variable>

 <xsl:template match="/">
    <xsl:sequence select=
     "f:json-document($vstrParam)/Students/*[sex = 'Female']"/>

 </xsl:template>
</xsl:stylesheet>

当上述转换应用于任何 XML 文档(忽略)时,会产生正确的结果

<Smith>
   <First_Name>Mary</First_Name>
   <sex>Female</sex>
</Smith>
<Jackson>
   <First_Name>Jackie</First_Name>
   <sex>Female</sex>
</Jackson>

【讨论】:

    【解决方案2】:

    查看Json.NET。这是一个很棒的图书馆,很容易进入。

    【讨论】:

      【解决方案3】:

      我不确定从 json 到 xml,但我们使用这个 xml 到 json xsl 模板在基于 XML 的 CMS 中发挥了很好的效果,可以很方便地为 ajax 应用程序重用现有的 XML 结构。

      http://code.google.com/p/xml2json-xslt/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        • 2023-04-03
        • 2015-03-05
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多