【问题标题】:Convert JSON to XML using groovy? [closed]使用 groovy 将 JSON 转换为 XML? [关闭]
【发布时间】:2015-04-29 07:38:54
【问题描述】:

我有一个 JSON 文件,在这个 JSON 文件中使用解析器转换成 XML 格式,然后写回 xml 文件

我在 Groovy 中找不到任何有关如何执行此操作的示例

如果我的 JSON 看起来像这样:

{
name: "sampleConfiguration",
description: "SampleDesc"
version: "1.0",
parameters: [
    {
        name: "sampleParameter",
        description: "parameter description",
        value: "20",
        enabled: "1"
    },
    {
        name: "items",
        description: "parameter with subparameters",
        value:[
            {
                name: "item",
                description: "nested parameter",
                value: "13"
            },
            {
                name: "item",
                description: "nested parameter 2",
                value: "TEST"
            }
        ]
    }
]}

然后我应该将其转换为如下所示的 XML:

<?xml version="1.0"?>
<sampleConfiguration version="1.0" description="SampleDesc">
<params>
    <sampleParameter enabled="1" description="parameter description">20</sampleParameter>
    <items description="parameter with subparameters">
        <item description="nested parameter">13</item>
        <item description="nested parameter 2">TEST</item>
    </items>
</params>
</sampleConfiguration>

我一直在寻找 JSON 到 XML 的转换代码

【问题讨论】:

  • 请提供一个例子和你(甚至失败)的尝试。
  • 我已经更新了代码。 --谢谢@Opal
  • 可惜好像不能高度自动化。
  • 有效的 json 可能会有所帮助

标签: xml json groovy


【解决方案1】:

如果您使您的 JSON 有效(" 将名称四舍五入,并在初始块中使用逗号),您可以执行此操作来转换它(专门针对此示例制作)

def json = '''
{
    "name": "sampleConfiguration",
    "description": "SampleDesc",
    "version": "1.0",
    "parameters": [
    {
        "name": "sampleParameter",
        "description": "parameter description",
        "value": "20",
        "enabled": "1"
    },
    {
        "name": "items",
        "description": "parameter with subparameters",
        "value":[
            {
                "name": "item",
                "description": "nested parameter",
                "value": "13"
            },
            {
                "name": "item",
                "description": "nested parameter 2",
                "value": "TEST"
            }
        ]
    }
]}'''

import groovy.json.*
import groovy.xml.*

def xml = new JsonSlurper().parseText(json).with { j ->
    new StringWriter().with { sw ->
        new MarkupBuilder(sw)."$name"(version: version, description:description) {
            params {
                parameters.each { p ->
                    if(p.value instanceof List) {
                        "$p.name"(description:p.description) {
                            p.value.each { v ->
                                "$v.name"(description: v.description, v.value)
                            }
                        }
                    }
                    else {
                        "$p.name"(description:p.description, p.value)
                    }
                }
            }
        }
        sw.toString()
    }
}

println xml

据我所知,没有将 xml 转换为 json 的一般情况。

这个例子的输出是:

<sampleConfiguration version='1.0' description='SampleDesc'>
  <params>
    <sampleParameter description='parameter description'>20</sampleParameter>
    <items description='parameter with subparameters'>
      <item description='nested parameter'>13</item>
      <item description='nested parameter 2'>TEST</item>
    </items>
  </params>
</sampleConfiguration>

【讨论】:

  • 它工作正常,谢谢@tim_yates。
  • 喜欢它的浓缩。
猜你喜欢
  • 1970-01-01
  • 2013-09-20
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多