【问题标题】:Generate JSON object in Groovy在 Groovy 中生成 JSON 对象
【发布时间】:2020-05-20 13:39:27
【问题描述】:

由于某种原因,我无法使用 JSONBuilder 在 Groovy 中创建 JSON 对象

这是我所拥有的,但它又回来了{}:

import groovy.json.JsonBuilder

JsonBuilder builder = new JsonBuilder()
    builder {
        name "Name"
        description "Description"
        type "schedule type"
        schedule {
          recurrenceType "one time"
          start "${startDateTime}"
          end "${endDateTime}"
        }
        scope {
          entities ["${applicationId}"]
          matches [
            {
              tags [
                {
                  key "key name"
                  context "some context"
                }
              ]
            }
          ]
        }
      }

有人知道用嵌套元素创建 JSON 对象的简单方法吗?

【问题讨论】:

  • 为什么不用groovy.json.JsonOutput.toJson([name:'Name', description: 'Description', schedule:[recurrenceType:'one time']]) 之类的东西?参数只是一个包含所有数据的地图。
  • @ernest_k 我试过你的建议。我想在这一点上,我尝试了任何变体:/如果我添加逗号,我的 IDE 会抱怨,就像在你的建议中一样,所以我没有添加它们,但它返回 {} 你测试你的建议了吗?对你起作用吗? return JsonOutput.toJson({name: "Name" description: "Description" ...}).toString()
  • 你所拥有的不是我所建议的。我建议了一个地图参数([... : ...],而不是{})。是的,我测试过了,它产生了字符串{"name":"Name","description":"Description","schedule":{"recurrenceType":"one time"}}
  • @ernest_k 我很好。差不多好了。我将如何处理输出中也需要 [ ] 的匹配项和标签? "matches": [ { "tags": [ { key "key name" context "some context" } ] } ] 加倍?
  • 我会为你添加一个答案。

标签: groovy jsonbuilder


【解决方案1】:

我倾向于发现JsonOutput 更易于用于已构建的数据。你的应该是这样的:

groovy.json.JsonOutput.toJson(
   [name: "Name",
    description: "Description",
    type: "schedule type",
    schedule: [
        recurrenceType: "one time",
        start: "${startDateTime}",
        end: "${endDateTime}"
    ],
    scope: [
        entities: ["${applicationId}"],
        matches: [
            [
                tags: [
                    [
                        key: "key name",
                        context: "some context"
                    ]
                ]
            ]
        ]
    ]]
)

【讨论】:

    【解决方案2】:
    1. 如果您从 Groovy 对象创建 JSON,那么您可以使用; json输出

    2. 如果你有几个值要传递并创建一个 JSON 对象,那么你可以使用; JsonGenerator

    3. 或者您可以使用 JsonBuilder 或 StreamingJsonBuilder

    查看groovy documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-15
      • 2015-10-05
      • 2020-01-25
      • 2016-04-30
      • 2020-06-08
      • 1970-01-01
      • 2023-04-09
      • 2011-11-13
      相关资源
      最近更新 更多