Fdo*_*Fdo 4 android kotlin klaxon
我对 Kotlin 相当陌生,并且在操作基本 JSON 字符串以访问其内容时遇到问题。JSON 字符串如下所示:
"{\"id\":24,\"name\":\"nope\",\"username\":\"unavailable1991\",\"profile_image_90\":\"/uploads/user/profile_image/24/23102ca5-1412-489d-afdf-235c112c7d8e.jpg\",\"followed_tag_names\":[],\"followed_tags\":\"[]\",\"followed_user_ids\":[],\"followed_organization_ids\":[],\"followed_podcast_ids\":[],\"reading_list_ids\":[],\"blocked_user_ids\":[],\"saw_onboarding\":true,\"checked_code_of_conduct\":true,\"checked_terms_and_conditions\":true,\"number_of_comments\":0,\"display_sponsors\":true,\"trusted\":false,\"moderator_for_tags\":[],\"experience_level\":null,\"preferred_languages_array\":[\"en\"],\"config_body_class\":\"default default-article-body pro-status-false trusted-status-false default-navbar-config\",\"onboarding_variant_version\":\"8\",\"pro\":false}"
Run Code Online (Sandbox Code Playgroud)
我试过使用 Gson 和Klaxon包,但没有任何运气。我最近使用 Klaxon 的尝试如下所示:
val json: JsonObject? = Klaxon().parse<JsonObject>(jsonString)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误: java.lang.String cannot be cast to com.beust.klaxon.JsonObject
我还尝试"在字符串的开头和结尾修剪双引号 ( ),并删除所有反斜杠,如下所示:
val jsonString = rawStr.substring(1,rawStr.length-1).replace("\\", "")
Run Code Online (Sandbox Code Playgroud)
但是当运行相同的 Klaxon 解析时,我现在收到以下错误: com.beust.klaxon.KlaxonException: Unable to instantiate JsonObject with parameters []
任何将此字符串解析为对象的建议(有或没有 Klaxon)将不胜感激!这不要紧,如果结果是JsonObject,Map或自定义类,只要我可以访问解析JSON数据:)
Gson是完成这种任务的完美库,这里是如何使用 gson 完成的。
Kotlin 实现,
var map: Map<String, Any> = HashMap()
map = Gson().fromJson(jsonString, map.javaClass)
Run Code Online (Sandbox Code Playgroud)
或者,如果您想尝试使用 Java,
Gson gson = new Gson();
Map<String,Object> map = new HashMap<String,Object>();
map = (Map<String,Object>) gson.fromJson(jsonString, map.getClass());
Run Code Online (Sandbox Code Playgroud)
而且我刚刚尝试了你的 json-string,它完美地工作,
Kotlin 现在提供了多平台/多格式的无反射序列化。
plugins {
kotlin("jvm") version "1.7.10" // or kotlin("multiplatform") or any other kotlin plugin
kotlin("plugin.serialization") version "1.7.10"
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.0")
}
Run Code Online (Sandbox Code Playgroud)
所以现在你可以简单地使用他们的标准 JSON 序列化库:
plugins {
kotlin("jvm") version "1.7.10" // or kotlin("multiplatform") or any other kotlin plugin
kotlin("plugin.serialization") version "1.7.10"
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.0")
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅:Kotlin 序列化指南。
| 归档时间: |
|
| 查看次数: |
4806 次 |
| 最近记录: |