我有一个 JSON 对象,我需要按“SortOrder”键的值对其进行排序,但我不确定如何在 Dart 中执行此操作。
JSON:
"BTS": {
"Id": "2039",,
"SortOrder": "10001",
},
"ETS": {
"Id": "1039",,
"SortOrder": "50",
},
"RTS": {
"Id": "39",,
"SortOrder": "1",
},
"TTS": {
"Id": "139",,
"SortOrder": "1001",
},
按“SortOrder”键值对这些对象进行排序的正确方法是什么?
最佳答案
乔纳威廉姆斯方法的简短版本:
var newMap = Map.fromEntries(originalMap.entries.toList()..sort((e1, e2) =>
int.parse(e1.value["SortOrder"]).compareTo(int.parse(e2.value["SortOrder"]))));
如果效率很重要,最好将“SortOrder”字符串解析为整数一次,或者使用对嵌入数字进行数值比较的字符串比较,例如 compareNatural来自包:集合。有了这个,代码将是:var newMap = Map.fromEntries(originalMap.entries.toList()..sort((e1, e2) =>
compareNatural(e1.value["SortOrder"], e2.value["SortOrder"])));
关于dart - 按键值对对象映射进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51235548/