0

我有以下代码:

package xxx

import javax.ws.rs.Path
import javax.ws.rs.GET
import javax.ws.rs.Produces
import grails.converters.JSON
import org.json.simple.JSONObject


@Path('/api/machine')
class MachineService {

    @GET
    @Produces(['application/json'])
    def String readAll() {
        def List<Machine> z = new ArrayList<Machine>(Machine.findAll())
        def List<String> list = new ArrayList<String>()

        for (i in z) {
            list.add([id: i.getId(), name: i.getName()] as JSON).toString()
        }


    }
}

我想将列表加入一个 JSON 并返回它。你能告诉我任何代码示例吗?

谢谢

4

2 回答 2

1

可以在一行中完成此操作:

Machine.all.collect{ [id: it.id, name: it.name] } as JSON
于 2013-05-31T14:32:40.010 回答
0

@James Kleeh 的答案返回一个 JSON 数组,它是一个有效的 JSON,应该足以满足您的目的。如果您需要一个 JSONObject(命名为 Array),那么您可以使用以下命令来增强 James 的回答:

[machineList: Machine.all.collect{ [id: it.id, name: it.name] }] as JSON

我猜当您的意思是带有 JSON 列表的 JSON 只不过是 JSON 数组或带有 JSON 数组的 JSON 对象。这两种方法都有效,但詹姆斯的答案是优化的方法。

于 2013-05-31T15:20:44.507 回答