json - 使用对象的部分属性在 GRAILS 中呈现 JSON

标签 json grails

我正在尝试从两个字段构建 JSON。说,我有一个对象(派对)列表,我只需要将 2 个项目作为 JSON 对传递。

def list = getMyList() //it contains 2 party objects
partyTo = array {
    for (i in list) {
        x partyId: i.id
        y partyName: i.toString()          
    }
}

JSON 字符串是
{
    "partyTo": [
        {"partyId":12},
        {"partyName":"Ar"},
        {"partyId":9},
        {"partyName":"Sr"}
    ]
}

当我在客户端提取它时,它被视为 4 个对象。我想要 2 个对象,格式如下。
{
    "partyTo": [
        {"partyId":12, "partyName":"Ar"},
        {"partyId":9 , "partyName":"Sr"}
    ]
}

我得到 4 个对象,可能是因为我使用数组来构建 JSON。我是 groovy 和 JSON 的新手,所以不确定正确的语法组合。任何帮助高度赞赏。
谢谢。

最佳答案

你是对的,问题出在你的数组的构造上。要获得所需的输出,您需要一组 map ,每个对象一个 map ,要获得整个“partyTo”对象,您需要将该列表添加到另一个 map :

    def parties = [
            ["id":12 , "name":"Ar", "privateField": "a"],
            ["id":9 , "name":"Sr", "privateField": "b"]
    ]

    def toRender = parties.collect { party->
        ["partyId": party.id, "partyName":party.name]
    }

    def result = ["partyTo" : toRender]
    render result as JSON

换句话说,Grails 映射变成了 JSON 对象,而 Grails 数组和列表变成了 JSON 中的数组

如果你总是想像这样渲染你的“派对”对象,你可以考虑使用 ObjectMarshaller .更多详细信息,请参阅 rendering JSON using object marshallers 上的帖子

关于json - 使用对象的部分属性在 GRAILS 中呈现 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562684/

相关文章:

javascript - 使用 D3.js 加载本地数据以进行可视化

javascript - 搜索小写和大写字符

php - 将连接结果映射为相关行下的数组

vue.js - 无法使用Vue概要文件并行运行Grails 4多项目构建

python - 在 Django 中获取反序列化对象的主键

json - 在 Go 中解析不熟悉的 YAML/JSON 文件

grails - 如何使用其他域对象启动 Grails 域类

hibernate - 字符串类型的Grails/hibernate 最大值

grails - 读取 g :datePicker-value in Grails without using the "new Object(params)"-method

grails - Grails 2.4.2和邮件插件1.0.6错误