使用groovy将JSON转换为XML? [英] Convert JSON to XML using groovy?

查看:158
本文介绍了使用groovy将JSON转换为XML?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个JSON文件,在这个JSON文件中使用解析器转换成XML格式,然后写回到xml文件中。我找不到任何示例如何在Groovy中做到这一点



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

<$
名称:sampleConfiguration,
描述:SampleDesc
版本:1.0,
参数:[
{
名称:sampleParameter,
描述:参数描述,
值:20,
启用:1
},
{
名称:items,
描述:带参数的参数,
值:[
{
名称:item,
描述:嵌套参数,
值:13
},
{
名称:item,
描述:neste d参数2,
值:TEST
}
]
}
]}

然后我应该将它转换为XML,如下所示:

  <?xml version =1.0?> 
< sampleConfiguration version =1.0description =SampleDesc>
< params>
< items description =parameter with subparameters>
< item description =嵌套参数> 13< / item>
< item description =嵌套参数2> TEST< / item>
< / item>
< / params>
< / sampleConfiguration>

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

解决方案

如果您使JSON有效(>名称和初始块中的逗号),您可以做这个转换它(特别制作本例)

  def json ='''
{
name:sampleConfiguration,
description:SampleDesc,
version:1.0,
parameters:[
{
name:sampleParameter,
description:参数说明,
value:20,
enabled:1
} ,
{
name:items,
description:parameter with subparameters,
value:[
{
name:item,
description:嵌套参数,
value:13
},
{
name :项目,
description:嵌套参数2,
value:TEST
}
]
}
]}' ''

导入groovy.json。*
导入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(描述:p.description){
p.value.each {v - >
$ v.name(description:v.description,v.value)
}
}
}
else {
$ p。名称(描述: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>
< / item>
< / params>
< / sampleConfiguration>


I have an JSON file, in this JSON file convert into XML format using parser, and then write back to xml file

I can't find any examples of how to do this in Groovy

If I have JSON looking like this:

{
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"
            }
        ]
    }
]}

Then I should convert it to the XML looking like this:

<?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>

I have been looking for JSON to XML converting code

解决方案

If you make your JSON valid (" round the names, and a comma in the initial block), you can do this to convert it (specifically crafted to this example)

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

There is no general case for converting xml to json that I know of.

The output from this example is:

<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>

这篇关于使用groovy将JSON转换为XML?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆