簡體   English   中英

沒有索引的 jsonBuilder

[英]jsonBuilder without indexes

我嘗試了此處描述的示例: http://docs.groovy-lang.org/2.4.7/html/gapi/groovy/json/JsonBuilder.html

這很好用,但是如何生成 json 有效負載,其中某些項目沒有索引,例如“firstElt”和“secondElt”:

[["firstElt","secondElt",[{"thirdElt":{"id":"1","name":"laloune"},"def":"blabla"}]]]

我嘗試了以下方法:

import groovy.json.JsonBuilder;
def builder = new groovy.json.JsonBuilder()
def root = builder { 
  'root' 'firstElt',
  'secondElt',
  thirdElt(
    id: '1',
    name: 'laloune'
    )
  'def' 'blabla' } 

但它會生成以下內容:

{
   "thirdElt":{
      "id":"1",
      "name":"laloune"
   },
   "root":[
      "firstElt",
      "secondElt",
      {
         "id":"1",
         "name":"laloune"
      }
   ],
   "def":"blabla"
}

我認為評論基本上回答了這個問題,但有時通過一個例子更清楚,我將在下面提供一個。

首先,您需要跟蹤您的 javascript 數據類型。 Javascript 除了單值事物外,還有 arrays(事物列表)和對象(本質上是鍵值對的映射)。

在您的示例中:

[["firstElt","secondElt",[{...
^
a javascript array

[["firstElt","secondElt",[{...
 ^
 an array within the outer array, index 0

[["firstElt","secondElt",[{...
                         ^
                         a second array at index 1

[["firstElt","secondElt",[{"thirdElt":{...
                          ^
                          a javascript map/object
                          this is the first element of the second
                          array in the outermost array

as mentioned in the comments, most often the simplest way of dealing with this in groovy is to generate a groovy data structure with the relevant array (list in groovy) and object (map in groovy) layout and then just convert it to json. 這樣,您可以使用所有 groovy 功能來構建和變異(更改)列表和地圖,然后在最后生成 json。

在您的示例中生成結構的示例代碼:

import groovy.json.* 

def structure = [             // outermost list
  ["firstElt", "secondElt"],  // a list, structure[0]
  [                           // a list, structure[1]
    [thirdElt: [              // a map, structure[1][0]
      id: "1",                // map entry, structure[1][0]['thirdElt']['id']
      name: "laloune"],
     def: "blabla"            // map entry, structure[1][0]['def']
   ]
  ]
]

def json = JsonOutput.toJson(structure)
def pretty = JsonOutput.prettyPrint(json)

println "json: \n$json"
println ""
println "pretty: \n$pretty"

執行此操作會產生:

╭─ groovy-jsonbuilder-without-indexes
╰─➤ groovy solution.groovy

json:
[["firstElt","secondElt"],[{"thirdElt":{"id":"1","name":"laloune"},"def":"blabla"}]]

pretty:
[
    [
        "firstElt",
        "secondElt"
    ],
    [
        {
            "thirdElt": {
                "id": "1",
                "name": "laloune"
            },
            "def": "blabla"
        }
    ]
]
╭─ groovy-jsonbuilder-without-indexes
╰─➤

暫無
暫無

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

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