如何在 Kotlin 中将 HashMap 转换为 JSON

30

我在 Kotlin 中有一个 HashMap

val map = HashMap<String, String>()
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");

如何将其转换为JSON格式的字符串?例如:

{"key1": "value1", "key2": "value2", "key3": "value3"}

使用Gson将Hashmap转换为Json。 - Milan Pansuriya
6个回答

59

您可以使用随 Android 一起提供的 org.json:

JSONObject(map).toString()

1
字符串转换为映射,怎么样? - Zulqurnain Jutt
@ZulqurnainJutt,您是指一个包含JSON对象的字符串,即反向转换吗? - Miha_x64
1
它给了我一个错误 Java类型不匹配,期望(可变)Map <(原始) Any?,(原始) Any?>!但找到(可变)Map <String!,String!>。使用显式转换 - Bitwise DEVS
@BitwiseDEVS 报告:https://youtrack.jetbrains.com/issue/KT-53407/ HashMap 未被识别为 Java 原始 Map 的子类型。 - Miha_x64
@Miha_x64 谢谢,我猜我现在已经没有选择了。 - Bitwise DEVS
显示剩余2条评论

21
你可以使用Gson来实现,
以下是示例,
val map = HashMap<String, String>()
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");

val gson = Gson()
Log.d("TAG", gson.toJson(map).toString())

输出结果为,

{"key1":"value1","key2":"value2","key3":"value3"}

8
使用 kotlinx.serialization:
import kotlinx.serialization.*
import kotlinx.serialization.json.*

fun main() {
   var store = HashMap<String, String>()
   var jsonString= Json.encodeToString(store)
   var anotherStore = Json.decodeFromString(jsonString)
}


使用 <String, Any> 的哈希映射时,出现了 SerializationException: Serializer for class 'Any' is not found. - iamcrypticcoder

2

如果有人在Kotlin中遇到问题,可以像这样使用gson:

val gson = Gson()
val json = JSONObject(gson.toJson(map))

1
有几种方法可以在Kotlin中将HashMap转换为JSON。以下是两种方法:
使用JSONObject和JSONArray: 1. 创建一个带有一些键值对的HashMap: ```kotlin val hashMap = HashMap() hashMap["name"] = "John" hashMap["age"] = 30 hashMap["married"] = true ``` 2. 将HashMap转换为JSONObject: ```kotlin val jsonObject = JSONObject(hashMap) ``` 3. 将JSONObject转换为JSON字符串: ```kotlin val jsonString = jsonObject.toString() ```
使用Gson库: 1. 在项目的app-level build.gradle文件中添加Gson依赖: ```groovy implementation 'com.google.code.gson:gson:2.8.6' ``` 2. 创建一个带有一些键值对的HashMap: ```kotlin val hashMap = HashMap() hashMap["name"] = "John" hashMap["age"] = 30 hashMap["married"] = true ``` 3. 使用Gson将HashMap转换为JSON字符串: ```kotlin val gson = Gson() val jsonString = gson.toJson(hashMap) ```
希望这能帮到你!

0

如果您正在使用klaxon,那么它就会变得非常简单:

val json = Klaxon().toJsonString(map)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接