标签: jsonbuilder

如何使用groovy builder生成数组类型的json?

我们可以通过groovy的json builder生成一个对象类型的json:

def builder = new groovy.json.JsonBuilder()
def root = builder.people {
    person {
        firstName 'Guillame'
        lastName 'Laforge'
        // Named arguments are valid values for objects too
        address(
               city: 'Paris',
               country: 'France',
               zip: 12345,
        )
        married true
        // a list of values
        conferences 'JavaOne', 'Gr8conf'
    }
}
def jsonStr = builder.toString()
Run Code Online (Sandbox Code Playgroud)

我喜欢这种类型的语法,但是如何构建一个数组类型的json?

例如

[
    {"code": "111", "value":"222"},
    {"code": "222", "value":"444"}
]
Run Code Online (Sandbox Code Playgroud)

我发现一些文件说我们应该使用JsonBuilder()构造函数:

def mydata = [ ["code": "111", "value":"222"],["code": "222", "value":"444"] ]
def builder = new groovy.json.JsonBuilder(mydata)
def …
Run Code Online (Sandbox Code Playgroud)

groovy jsonbuilder

14
推荐指数
1
解决办法
1万
查看次数

如何使用JsonBuilder构造json,其键具有变量名称和值具有其值?

如何使用具有相同名称的键和值的JsonBuilder构造json?

import groovy.json.JsonBuilder

def userId = 12 // some user id obtained from else where.

def json = new JsonBuilder()
def root = json {
    userId userId
}
print json.toString()
Run Code Online (Sandbox Code Playgroud)

哪会产生错误

groovy.lang.MissingMethodException:没有方法签名:java.lang.Integer.call()适用于参数类型:(java.lang.Integer)values:[12]可能的解决方案:wait(),any(),abs (),wait(long),wait(long,int)和(java.lang.Number)

引用密钥确实没有效果.知道如何使这项工作.

编辑:

我希望JSON像{ userId: 12 }.另外,为什么将键作为字符串写不起作用?

long userId = 12   
def json = new JsonBuilder()
def root = json {
    "userId" userId
}
Run Code Online (Sandbox Code Playgroud)

提供的示例只是一个片段.情况是我有很多控制器动作,它们已经有各种变量.现在我添加一个部分,我试图创建一个JSON字符串,其中包含变量所具有的各种值.因此,更改现有变量名称并不是很实际,如果我可以构造具有相同名称的JSON字符串,那么它将更加一致.为我想要的所有变量编写访问器方法也不是一种优雅的方法.我目前所做的是使用不同的命名方案user_id,userId但同样,它与我遵循的其他约定不一致.所以我正在寻找一种优雅的方法,以及为什么JsonBuilder这样做的原因.

在JavaScript的情况下,

var a = 1
JSON.stringify({a: a})    // gives "{"a":1}"
Run Code Online (Sandbox Code Playgroud)

这是预期的结果.

groovy json jsonbuilder

12
推荐指数
1
解决办法
4万
查看次数

如何使用groovy jsonbuilder和.each来创建数组?

我想用JSON-Builder创建一个数组.

预期格式:

{
  "Header": {
    "SomeKey" : "SomeValue"
 }
  "Data": [
    { 
      "SomeKey" : "SomeValue"
    }, 
    {
     "SomeKey" : "SomeValue"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的代码:

    def builder = new groovy.json.JsonBuilder()

    def root = builder {
        Header {            
        "Typ" "update"
        "Code" "UTF-8"
        "TransaktionsNr" item.transactionNumber
        "DatumZeit" new Date().format("dd.MM.yyyy HH:mm")
    }

    customers.each ({ customer->           
        "Data" { 
            "Email" customer.code
            "Newsletter" customer.newsletterSubscribed
        }
    })
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我只在数据部分得到一个元素.我尝试使用[]而不是{},但我仍然只得到一个元素,我做错了什么?

arrays each groovy jsonbuilder

11
推荐指数
1
解决办法
1万
查看次数

在Groovy中使用jsonbuilder修改json

我试图修改json的内容,然后打印它以查看它是否已更改此代码但收到错误

 def builder = new JsonBuilder(request)
 log.info(builder.content)
 builder.content.device.dpidsha1= 'abcd'  
 log.info(builder.toPrettyString())
Run Code Online (Sandbox Code Playgroud)

错误:

no such property: device
Run Code Online (Sandbox Code Playgroud)

json看起来像这样:

{
   "app":{ },
   "at":2,
   "badv":[ ],
   "bcat":[ ],
   "device":{
      "carrier":"310-410",
      "connectiontype":3,
      "devicetype":1,
      "dnt":0,
      "dpidmd5":"268d403db34e32c45869bb1401247af9",
      "dpidsha1":"1234",
.
.
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮助理解我做错了什么,我怎么能纠正它.

groovy json jsonbuilder

9
推荐指数
1
解决办法
1万
查看次数

Groovy Simple JSON数组构建器

我需要在JSON中构建一个简单的JSON数组,但在循环中它会在每次迭代期间覆盖第一个值.

def jsonBuilder = new groovy.json.JsonBuilder()
contact.each {
            jsonBuilder.contact(
                    FirstName:  it.getFirstName(),
                    LastName:  it.getLastName(),
                    Title: it.getTitle(),       
            )
    }
Run Code Online (Sandbox Code Playgroud)

它只返回简单的JSON并覆盖每次迭代的值并保留最后一次.在groovy中构造JSON数组的语法是什么?

arrays groovy jsonbuilder

8
推荐指数
1
解决办法
2万
查看次数

捕获:java.lang.StackOverflowError JsonBuilder 关闭

我一直在尝试读取 xml 文件并使用 groovy 的 JsonBuilder 将其转换为 json。问题是当我打印时

def builder = new JsonBuilder(jsonObject)
println builder.toPrettyString()
Run Code Online (Sandbox Code Playgroud)

我被抓住了:java.lang.StackOverflowError

这是整个堆栈跟踪

Exception in thread "main" java.lang.StackOverflowError
    at groovy.json.JsonOutput.writeObject(JsonOutput.java:259)
    at groovy.json.JsonOutput.writeIterator(JsonOutput.java:442)
    at groovy.json.JsonOutput.writeObject(JsonOutput.java:272)
    at groovy.json.JsonOutput.writeIterator(JsonOutput.java:442)
    at groovy.json.JsonOutput.writeObject(JsonOutput.java:272)
    at groovy.json.JsonOutput.writeIterator(JsonOutput.java:442)
    at groovy.json.JsonOutput.writeObject(JsonOutput.java:272)
    at groovy.json.JsonOutput.writeIterator(JsonOutput.java:442)
    at groovy.json.JsonOutput.writeObject(JsonOutput.java:272)
    at groovy.json.JsonOutput.writeIterator(JsonOutput.java:442)
    at groovy.json.JsonOutput.writeObject(JsonOutput.java:272)
    at groovy.json.JsonOutput.writeIterator(JsonOutput.java:442)
    at groovy.json.JsonOutput.writeObject(JsonOutput.java:272)
    at groovy.json.JsonOutput.writeIterator(JsonOutput.java:442)
Run Code Online (Sandbox Code Playgroud)

这是代码。

package firstgroovyproject

import groovy.json.JsonBuilder

class XmlToJsonII {
    static void main(def args){

        def carRecords = '''

<records>
    <car name='HSV Maloo' make='Holden' year='2006'>
        <countries>
            <country>
                Austria
            </country>
            <country>
                Spain
            </country> …
Run Code Online (Sandbox Code Playgroud)

groovy closures jsonbuilder

5
推荐指数
1
解决办法
5311
查看次数

在Groovy中使用JSONBuilder排除空值

是否可以使用默认的JsonBuilder库在Groovy中创建JSON值以排除对象的所有空值?比如杰克逊在Java中通过注释类来排除空值.

一个例子是:

{
   "userId": "25",
   "givenName": "John",
   "familyName": null,
   "created": 1360080426303
}
Run Code Online (Sandbox Code Playgroud)

哪个应该打印为:

{
   "userId": "25",
   "givenName": "John",
   "created": 1360080426303
}
Run Code Online (Sandbox Code Playgroud)

null groovy json jsonbuilder

4
推荐指数
1
解决办法
4812
查看次数

如何在 groovy 中使用 JsonBuilder 创建数组

我想使用闭包方式来制作以下 json:

{
    "root": [
        {
            "key": "testkey",
            "value": "testvalue"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下语法:

new JsonBuilder().root {
        'key'(testKey)
        'value'(testValue)
}
Run Code Online (Sandbox Code Playgroud)

但它产生:

{
    "root": {
        "key": "testkey",
        "value": "testvalue"
    }
}
Run Code Online (Sandbox Code Playgroud)

arrays groovy json jsonbuilder

4
推荐指数
2
解决办法
6138
查看次数

如何在groovy中修改JSON

我使用JsonBuilder来构建JSONObject/String.

但是,如何更新/更改此JSONObject/String中一个字段的值?

我没有看到使用JsonBuilder执行此操作的可能性.我用什么节目呢?

groovy json jsonbuilder

2
推荐指数
1
解决办法
7169
查看次数

Groovy - 从String构造json

我正在使用Groovy,我试图创建一个简单的函数,它将从提供的Json字符串构造一个Json对象,然后我试图打印这个字符串,但不幸的是它在输出中添加了方括号.

这是我代码中的代码段:

def JsonBuilder ConstructJsonObject (jsonStr) {
    def jsonToReturn = new JsonBuilder();
    def root = jsonToReturn(jsonStr);
    return jsonToReturn;
}

String jsonStr = "{id: '111'}";
println(jsonStr);
def jsonObject = ConstructJsonObject(jsonStr);
println(jsonObject.toPrettyString());
Run Code Online (Sandbox Code Playgroud)

这是输出:

{id:'111'}

["{id:'111'}"]

它返回一个数组,而不是一个纯粹的Json.

groovy json jsonbuilder

2
推荐指数
1
解决办法
3170
查看次数

标签 统计

groovy ×10

jsonbuilder ×10

json ×6

arrays ×3

closures ×1

each ×1

null ×1