groovy json转xml
时间: 2023-06-29 11:06:40 浏览: 182
json 转 xml
Groovy 内置了 `JsonSlurper` 和 `MarkupBuilder` 类可以方便地进行 JSON 和 XML 的转换。
下面是一个将 JSON 转换为 XML 的例子:
```groovy
import groovy.json.JsonSlurper
import groovy.xml.MarkupBuilder
def json = '{"name": "John", "age": 30, "city": "New York"}'
def slurper = new JsonSlurper()
def object = slurper.parseText(json)
def writer = new StringWriter()
def builder = new MarkupBuilder(writer)
builder.'person' {
'name'(object.name)
'age'(object.age)
'city'(object.city)
}
def xml = writer.toString()
println xml
```
输出:
```xml
<person>
<name>John</name>
<age>30</age>
<city>New York</city>
</person>
```
其中,`JsonSlurper` 类用于解析 JSON 字符串为 Groovy 的对象,`MarkupBuilder` 类用于构建 XML 文档。在 `MarkupBuilder` 中,使用 `'person'` 定义了父节点,然后使用 `'name'`、`'age'` 和 `'city'` 分别作为子节点,使用 `object` 中的属性作为文本内容。
如果你想要将 XML 转换为 JSON,可以使用 `JsonOutput` 类的 `toJson` 方法将 Groovy 对象转换为 JSON 字符串,示例代码如下:
```groovy
import groovy.json.JsonOutput
import groovy.xml.XmlUtil
def xml = '<person><name>John</name><age>30</age><city>New York</city></person>'
def root = XmlUtil.parseText(xml)
def object = [:].withDefault { k -> root."$k"*.text().join('') }
def json = JsonOutput.toJson(object)
println json
```
输出:
```json
{"name":"John","age":30,"city":"New York"}
```
在这里,`XmlUtil` 类用于将 XML 字符串解析为 DOM 对象,然后使用 `withDefault` 方法将 DOM 对象转换为 Groovy 的 `Map` 对象。最后使用 `JsonOutput` 类的 `toJson` 方法将 `Map` 对象转换为 JSON 字符串。
阅读全文