Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在groovy中按项值排序json字符串_Json_Sorting_Groovy - Fatal编程技术网

在groovy中按项值排序json字符串

在groovy中按项值排序json字符串,json,sorting,groovy,Json,Sorting,Groovy,我有以下代码块: def response = '[{"id": "121","startTime": "2013-11-10T20:48:54Z", "reqId": 123456, "endTime": null, "numFiles" :null}, {"id": "123","startTime": "2013-11-29T21:45:00Z","reqId": 123458,"endTime": "2013-11-30T21:45:00Z", "numFiles"

我有以下代码块:

def response =  '[{"id": "121","startTime": "2013-11-10T20:48:54Z", "reqId": 123456, "endTime": null, "numFiles"     :null}, 
{"id": "123","startTime": "2013-11-29T21:45:00Z","reqId": 123458,"endTime": "2013-11-30T21:45:00Z", "numFiles"     :null }, 
{"id": "121","startTime": "2013-11-8T20:48:54Z", "reqId": 123111, "endTime": null, "numFiles" :null}]'

 def sortedResponse = response.sort { a,b -> b.reqId <=> a.reqId}

def reqRespAPI = new JsonSlurper().parseText(sortedResponse )

def id = reqRespAPI.id
def stTime = reqRespAPI.startTime
def eTime = reqRespAPI.endTime
def rqId = reqRespAPI.reqId
def numRec = reqRespAPI.numFiles

...some other stuff here....
def response='[{“id”:“121”,“startTime”:“2013-11-10T20:48:54Z”,“reqId”:123456,“endTime”:null,“numFiles”:null},
{“id”:“123”,“开始时间”:“2013-11-29T21:45:00Z”,“请求id”:123458,“结束时间”:“2013-11-30T21:45:00Z”,“numFiles”:null},
{“id”:“121”,“startTime”:“2013-11-8T20:48:54Z”,“reqId”:123111,“endTime”:null,“numFiles”:null}]
def sortedResponse=response.sort{a,b->b.reqId a.reqId}
def reqRespAPI=new JsonSlurper().parseText(sortedResponse)
def id=reqRespAPI.id
def stTime=reqRespAPI.startTime
def eTime=reqRespAPI.endTime
def rqId=reqRespAPI.reqId
def numRec=reqRespAPI.numFiles
…这里还有其他东西。。。。
我正在尝试按reqId(rqId)降序排序。我必须使用for循环吗?当前sortedResponse正在引发异常:

groovy.lang.MissingMethodException:没有方法签名:java.lang.String.sort()适用于参数类型:(…Controller$\u closure2\u closure8)值:[…Controller$\u closure2_closure8@5976ac5b]

我也尝试过排序(新的OrderBy(…),但也不起作用


任何帮助都将不胜感激。

问题似乎是您试图对响应字符串进行排序,而不是对JSONObject的集合进行排序

试试这个

def reqRespJSON = new JsonSlurper().parseText( response )
def sortedJSON = reqRespJSON.sort { a,b -> b.reqId <=> a.reqId}


def id = sortedJSON[0].id
def reqRespJSON=new JsonSlurper().parseText(响应)
def sortedJSON=reqRespJSON.sort{a,b->b.reqId a.reqId}
def id=sortedJSON[0]。id

请注意,sortedJSON是一个映射列表,因此您必须指定id来自哪个映射(使用[0])。

它是一个映射列表,而不是JSONObject数组;-)非常感谢。这把它修好了。请更新您的回复,如@tim_yates所示