簡體   English   中英

使用 groovy 嵌套 XML 到平面 JSON

[英]Nested XML to flat JSON using groovy

我還是 groovy 的新手。我需要從嵌套的 xml 文件創建一個平面 json 文件。 當我嘗試創建 JSON 時,我很難訪問 header 字段。

這是輸入:

<?xml version="1.0"?>
<Data>
<Record>
    <Header>Header01</Header>
    <Item>
        <TEST>E1</TEST>
        <TEST2>Free text</TEST2>
    </Item>
</Record>
<Record>
    <Header>Header02</Header>
    <Item>
        <TEST>E2</TEST>
        <TEST2>Free text</TEST2>
    </Item>
    <Item>
        <TEST>E3</TEST>
        <TEST2>Free text</TEST2>
    </Item>
</Record>

這是我的代碼:

def xml = new XmlSlurper().parse(reader)
def RecordList = xml.'*'.findAll { it->it.name() == 'Record' }
def itemlist = RecordList.'*'.findAll{node ->node.name()== 'Item'}.collect{
    row -> row.collectEntries{[TEST: row.TEST.text(), TEST2:row.TEST2.text()]}
}

StringWriter writer = new StringWriter()
StreamingJsonBuilder builder = new StreamingJsonBuilder(writer)

builder {
    "Records" itemlist
}

println JsonOutput.prettyPrint(writer.toString())

Output:

  {"Records":[{"TEST":"E1","TEST2":"Free text"},{"TEST":"E2","TEST2":"Free text"}, 
  {"TEST":"E3","TEST2":"Free text"}]}

如何使用此方法填充 header 字段? 當我創建項目列表時,我無法再訪問 xml 中的 header 字段。

不是100%你的意思...

你的意思是:

def result = new XmlParser().parse(reader)
    .Record
    .collectMany { record ->
        record.Item.collect {
            [ Header: record.Header.text(), Test: it.TEST.text(), Test2: it.TEST2.text() ]
        }
    }

println new JsonBuilder(result).toPrettyString()

哪個打印:

[
    {
        "Header": "Header01",
        "Test": "E1",
        "Test2": "Free text"
    },
    {
        "Header": "Header02",
        "Test": "E2",
        "Test2": "Free text"
    },
    {
        "Header": "Header02",
        "Test": "E3",
        "Test2": "Free text"
    }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM