我有一条JSON消息,在使用JsonSluper对其进行解析后,顺序变得混乱了。我知道排序并不重要,但是在将消息解析并分解为单个对象后,我需要将消息放回升序,因此我可以构建一个JsonArray并以正确的升序显示消息。>
String test = """[
{
"AF": "test1",
"BE": "test2",
"CD": "test3",
"DC": "test4",
"EB": "test5",
"FA": "test5"
},
{
"AF": "test1",
"BE": "test2",
"CD": "test3",
"DC": "test4",
"EB": "test5",
"FA": "test5"
}
]"""
parseText生成以下内容:
def json = new groovy.json.JsonSlurper().parseText(test);
[{CD=test3, BE=test2, AF=test1, FA=test5, EB=test5, DC=test4}, {CD=test3,
BE=test2, AF=test1, FA=test5, EB=test5, DC=test4}]
解析json消息后,我需要将扁平化的json对象传递到一个方法中,在该方法中,需要先使用map键按升序对点进行排序,然后再添加到以下JSONArray中。
def json = new groovy.json.JsonSlurper().parseText(test);
for( int c = 0; c < json?.size(); c++ )
doSomething(json[c]);
void doSomething( Object json ){
def jSort= json.????
JSONArray jsonArray = new JSONArray();
jsonArray.add(jSort);
}
答案 0 :(得分:1)
您可以在添加条目之前对条目进行排序。以下使用collectEntries
,它创建LinkedHashMap
对象(因此保持顺序):
def json = new groovy.json.JsonSlurper().parseText(test);
def sortedJson = json.collect{map -> map.entrySet().sort{it.key}
.collectEntries{[it.key, it.value]}}
sortedJson
具有此内容,该内容似乎按要求进行了排序:
[[AF:test1, BE:test2, CD:test3, DC:test4, EB:test5, FA:test5],
[AF:test1, BE:test2, CD:test3, DC:test4, EB:test5, FA:test5]]