首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带索引的jsonBuilder

不带索引的jsonBuilder
EN

Stack Overflow用户
提问于 2019-11-16 00:49:06
回答 1查看 61关注 0票数 0

我尝试了这里描述的示例:http://docs.groovy-lang.org/2.4.7/html/gapi/groovy/json/JsonBuilder.html

这很好用,但是我如何才能生成一个json有效负载,其中一些项没有索引,比如"firstElt“和"secondElt”:

代码语言:javascript
复制
[["firstElt","secondElt",[{"thirdElt":{"id":"1","name":"laloune"},"def":"blabla"}]]]

我尝试了以下几种方法:

代码语言:javascript
复制
import groovy.json.JsonBuilder;
def builder = new groovy.json.JsonBuilder()
def root = builder { 
  'root' 'firstElt',
  'secondElt',
  thirdElt(
    id: '1',
    name: 'laloune'
    )
  'def' 'blabla' } 

但它会生成以下内容:

代码语言:javascript
复制
{
   "thirdElt":{
      "id":"1",
      "name":"laloune"
   },
   "root":[
      "firstElt",
      "secondElt",
      {
         "id":"1",
         "name":"laloune"
      }
   ],
   "def":"blabla"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-18 17:01:58

我认为评论基本上已经回答了这个问题,但由于有时通过示例更清楚,因此我将在下面提供一个。

首先,你需要跟踪你的javascript数据类型。除了单值对象之外,Javascript还有数组(对象列表)和对象(本质上是键值对的映射)。

在您的示例中:

代码语言:javascript
复制
[["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

正如评论中提到的,在groovy中处理这个问题的最简单的方法通常是生成一个具有相关数组( groovy中的list)和对象(groovy中的map)布局的groovy数据结构,然后将其转换为json。通过这种方式,您可以使用所有groovy功能来构建和变化(更改)列表和映射,然后在最后生成json。

生成示例中的结构的示例代码:

代码语言:javascript
复制
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"

执行此过程:

代码语言:javascript
复制
╭─ 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
╰─➤
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58881415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档