繁体   English   中英

Groovy - JSON output 不完全符合要求

[英]Groovy - JSON output not quite as required

我在 Groovy 中编写了一些代码来解析结构化的 XML 文件,创建一些平面数据行,并 output 这些以特定的 JSON 格式。 我对最后一部分有疑问 - 几个小时后,我仍然只能非常接近所需的结构,但不完全相同。

代码是:

package test
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
import groovy.util.slurpersupport.NodeChild
import java.lang.reflect.Array
import java.sql.Timestamp
import java.text.SimpleDateFormat
import groovy.json.JsonOutput


class builder7 {


    static void main (String[] args) {


        def inputXML =  new File("C:\\Users\\Someone\\Downloads\\xml\\salesOrderIdoc.xml");
        def doc = new XmlSlurper().parse(inputXML)


        def salesorg
        def qual
        def matq
        String row = ""
        def orders = []
        def orderssplit = []

        def fields = []
        fields << "Field1"
        fields << "Field2"
        fields << "Field3"



        doc.E1EDK14.each { hd ->
            qual = hd.QUALF.text()
            if (qual == '008') {
                salesorg = hd.ORGID.text()
            }
        }

        doc.E1EDP01.each{ item->
            row = salesorg + "," + "${item.POSEX[0].text()}"
            item.E1EDP19.each{ mat->
                matq = mat.QUALF.text()
                if (matq == '003') {
                    def material = mat.IDTNR.text()
                    row = row + "," + material
                }
            }

            orders << row

            def values = row.split(',')

            orderssplit << values
        }


        def builder = new groovy.json.JsonBuilder()
        def root = builder{
            scenario (

                    Name: 'Rescheduling',
                    Scope: 'Public'
                    )


            Table(
                    Namespace: 'OrderOpt',
                    Name: 'ShipmentSize'

                    )

            Fields(fields

                    )


            Rows{

                Values  (orderssplit)
            }
        }

        println builder.toPrettyString()
    }
}

结果 output 是:

{
    "scenario": {
        "Name": "Rescheduling",
        "Scope": "Public"
    },
    "Table": {
        "Namespace": "OrderOpt",
        "Name": "ShipmentSize"
    },
    "Fields": [
        "Field1",
        "Field2",
        "Field3"
    ],
    "Rows": {
        "Values": [
            [
                "PT04",
                "10",
                "8410104437749"
            ],
            [
                "PT04",
                "20",
                "9300631115434"
            ],
            [
                "PT04",
                "30",
                "5601217110664"
            ],
            [
                "PT04",
                "40",
                "5601217110657"
            ],
            [
                "PT04",
                "50",
                "7805010001909"
            ],
            [
                "PT04",
                "60",
                "3059944021869"
            ],
            [
                "PT04",
                "70",
                "5011417549247"
            ],
            [
                "PT04",
                "80",
                "3059944021845"
            ],
            [
                "PT04",
                "90",
                "8410104882143"
            ],
            [
                "PT04",
                "100",
                "8410104882051"
            ],
            [
                "PT04",
                "110",
                "5701092103017"
            ],
            [
                "PT04",
                "120",
                "8410104274160"
            ],
            [
                "PT04",
                "130",
                "8410104391737"
            ],
            [
                "PT04",
                "140",
                "8410104882082"
            ],
            [
                "PT04",
                "150",
                "8410104249618"
            ],
            [
                "PT04",
                "160",
                "8410104437855"
            ],
            [
                "PT04",
                "170",
                "8410104882136"
            ]
        ]
    }
}

但是,所需的 output 应该有

 "Rows":[
      {
         "Values":[

代替

 "Rows": {
        "Values": [

显然我对此并不陌生,但我已尽我所能找到解决方案,但未能成功。

要求的格式:

{
   "Scenario":{
      "Name":"Order Rescheduling",
      "Scope":"Public"
   },
   "Table":{
      "Namespace":"OrderOpt",
      "Name":"ShipmentSize"
   },
   "Fields":[
      "Field1",
      "Field2",
      "Field3"
   ],
   "DataUpdate":{
      "DataSource":"Order Optimizer",
      "DataFile":"ShipmentSize.tab"
   },
   "Rows":[
      {
         "Values":[
            "PT04",
            "10",
            "8410104437749"
         ]
      },
      {
         "Values":[
            "PT04",
            "20",
            "9300631115434"
         ]
      },
      {
         "Values":[
            "PT04",
            "30",
            "5601217110664"
         ]
      },
      {
         "Values":[
            "PT04",
            "40",
            "5601217110657"
         ]
      },
      {
         "Values":[
            "PT04",
            "50",
            "7805010001909"
         ]
      },
      {
         "Values":[
            "PT04",
            "60",
            "3059944021869"
         ]
      },
      {
         "Values":[
            "PT04",
            "70",
            "5011417549247"
         ]
      },
      {
         "Values":[
            "PT04",
            "80",
            "3059944021845"
         ]
      },
      {
         "Values":[
            "PT04",
            "90",
            "8410104882143"
         ]
      },
      {
         "Values":[
            "PT04",
            "100",
            "8410104882051"
         ]
      },
      {
         "Values":[
            "PT04",
            "110",
            "5701092103017"
         ]
      },
      {
         "Values":[
            "PT04",
            "120",
            "8410104274160"
         ]
      },
      {
         "Values":[
            "PT04",
            "130",
            "8410104391737"
         ]
      },
      {
         "Values":[
            "PT04",
            "140",
            "8410104882082"
         ]
      },
      {
         "Values":[
            "PT04",
            "150",
            "8410104249618"
         ]
      },
      {
         "Values":[
            "PT04",
            "160",
            "8410104437855"
         ]
      },
      {
         "Values":[
            "PT04",
            "170",
            "8410104882136"
         ]
      }
   ]
}

亲切的问候

乔治

def builder = new groovy.json.JsonBuilder()


        def root = builder{
            scenario (

                    Name: 'Rescheduling',
                    Scope: 'Public'
                    )


            Table(
                    Namespace: 'OrderOpt',
                    Name: 'ShipmentSize'

                    )

            Fields(fields

                    )
            DataUpdate(
                    DataSource: 'Order Optimizer',
                    DataFile: "ShipmentSize.tab"

                    )

            Rows(

                    orderssplit.collect { ords->

                        ["Values":ords]
                    }
                    )
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM