我想用sorted_keys序列化JSONObject或Map到字符串。
val mapObject = mapOf<String, Any>(
"b" to arrayOf(
"bb",
mapOf<String, Any>(
"bbb" to "bbb",
"aaa" to "aaa"
),
"aa"
),
"a" to "a"
)
val jsonObject = JSONObject(mapObject)
println(jsonObject.toString())
它打印
{"b":["bb",{"bbb":"bbb","aaa":"aaa"},"aa"],"a":"a"}
但是我想打印
{"a": "a", "b": ["bb", {"aaa": "aaa", "bbb": "bbb"}, "aa"]}
在Python中有
json.dumps(jsonObject, sort_keys=True)
在Swift中有
jsonObject.rawString(options: [.sortedKeys])
执行此操作
但是在Android Kotlin中似乎没有优雅的方法来做到这一点。
JSONObject
主要是不安全的&中间格式,所以在这种形式下使用它没有很多选择,主要倾向于反序列化到"实际"。任何作品的类表示
为此,如果你可以控制地图的输入,你可以从使用mapOf<String, Any>
切换到sortedMapOf<String, Any>
- Kotlin对此保持不同的实现(类似地,如果你想在构建后编辑你的地图,你会想要一个mutableMapOf<String, Any>
)。
如果您已经有一个现有的映射,您也可以使用toSortedMap
方法。
默认情况下,所有的排序都应该基于键的自然顺序。