如何从无引号的字符串构建json对象
在使用kotlin的android应用程序中,从某处收到字符串如何从无引号的字符串构建json对象,json,regex,kotlin,Json,Regex,Kotlin,在使用kotlin的android应用程序中,从某处收到字符串 val str = "{key1: {key2: {key3: {v1: a1, v2: a2}}}}" 当尝试验证为有效的json时,它抛出异常 val obj2 = Gson().getAdapter(JsonElement::class.java).fromJson(str) got exception: com.google.gson.stream.MalformedJsonException: Us
val str = "{key1: {key2: {key3: {v1: a1, v2: a2}}}}"
当尝试验证为有效的json时,它抛出异常
val obj2 = Gson().getAdapter(JsonElement::class.java).fromJson(str)
got exception:
com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 3 path $.
我想也许先加上这句话,试过了
val result1: String = str.replace("([\\w.]+)", "\"$1\"")
val result2 = str2.replace("/([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)/g", "\"$1$2\"")
两者都不添加quote和result1,result2仍然与原始str相同
如何使未加引号的json字符串成为带引号的json字符串
"{\"key1\": {\"key2\": {\"key3\": {\"a\": \"a1\"}}}}"
更新:需要将其转换为正则表达式:
val result: String = str.replace("([\\w.]+)".toRegex(), "\"$1\"")
用于:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
com.google.code.gson
格森
2.8.5
例如:
package org.example
import com.google.gson.JsonObject
import com.google.gson.JsonParser
fun main(args: Array<String>) {
val str = "{key1: {key2: {key3: {v1: a1, v2: a2}}}}"
val jsonObject: JsonObject = JsonParser().parse(str).getAsJsonObject()
val nestedJsonObject = jsonObject.get("key1").asJsonObject
val key2 = nestedJsonObject.get("key2")
println(key2);
}
package org.example
导入com.google.gson.JsonObject
导入com.google.gson.JsonParser
趣味主线(args:Array){
val str=“{key1:{key2:{key3:{v1:a1,v2:a2}}”
val jsonObject:jsonObject=JsonParser().parse(str).getAsJsonObject()
val nestedJsonObject=jsonObject.get(“key1”).asJsonObject
val key2=nestedJsonObject.get(“key2”)
println(键2);
}
据我所知,您可以使用GsonBuilder.setLenient
方法允许不带引号的字符串。那不管用吗?管用,谢谢val-jsonObject:jsonObject=JsonParser.parseString(str2).asJsonObject
。不知道如何使正则表达式部分工作tho。