首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android中使用kotlin将字符串json转换为jsonArray

在android中使用kotlin将字符串json转换为jsonArray
EN

Stack Overflow用户
提问于 2018-08-10 00:35:52
回答 1查看 11.1K关注 0票数 2

我正在尝试将此字符串转换为jsonArray。

代码语言:javascript
复制
for (jsonIndex in 0..(jsonArray.length() - 1)) {
          Log.d("JSON", jsonArray.getJSONObject(jsonIndex).getString("translation").toString())
}

然而,这并不是一个对象,而是一个字符串,我很确定这是因为someString的方式。是否有一种方法可以修复此字符串,或者如何进一步处理?

代码语言:javascript
复制
 val wordReview = "[\n  \"{\\n  \\\"assignUser\\\" : false,\\n  \\\"transliteration\\\" : \\\"wa\\\",\\n  \\\"lessonNumber\\\" : 1,\\n  \\\"seen\\\" : 5,\\n  \\\"arabicWord\\\" : \\\"وَ\\\",\\n  \\\"translation\\\" : \\\"and\\\",\\n  \\\"priority\\\" : 2\\n}\",\n  \"{\\n  \\\"assignUser\\\" : false,\\n  \\\"transliteration\\\" : \\\"Maryam\\\",\\n  \\\"lessonNumber\\\" : 1,\\n  \\\"seen\\\" : 4,\\n  \\\"arabicWord\\\" : \\\"مَرْيَمَ\\\",\\n  \\\"translation\\\" : \\\"Maryam\\\",\\n  \\\"priority\\\" : 3\\n}\",\n  \"{\\n  \\\"assignUser\\\" : false,\\n  \\\"transliteration\\\" : \\\"allati\\\",\\n  \\\"lessonNumber\\\" : 1,\\n  \\\"seen\\\" : 4,\\n  \\\"arabicWord\\\" : \\\"الَّتِي\\\",\\n  \\\"translation\\\" : \\\"the one who\\\",\\n  \\\"priority\\\" : 6\\n}\",\n  \"{\\n  \\\"assignUser\\\" : false,\\n  \\\"transliteration\\\" : \\\"min\\\",\\n  \\\"lessonNumber\\\" : 1,\\n  \\\"seen\\\" : 4,\\n  \\\"arabicWord\\\" : \\\"مِنْ\\\",\\n  \\\"translation\\\" : \\\"from\\\",\\n  \\\"priority\\\" : 3\\n}\",\n  \"{\\n  \\\"assignUser\\\" : false,\\n  \\\"transliteration\\\" : \\\"kaanat\\\",\\n  \\\"lessonNumber\\\" : 1,\\n  \\\"seen\\\" : 5,\\n  \\\"arabicWord\\\" : \\\"كَانَتْ\\\",\\n  \\\"translation\\\" : \\\"was\\\",\\n  \\\"priority\\\" : 2\\n}\",\n  \"{\\n  \\\"assignUser\\\" : false,\\n  \\\"transliteration\\\" : \\\"rabbuha\\\",\\n  \\\"lessonNumber\\\" : 1,\\n  \\\"seen\\\" : 3,\\n  \\\"arabicWord\\\" : \\\"رَبُّهَا\\\",\\n  \\\"translation\\\" : \\\"her Lord\\\",\\n  \\\"priority\\\" : 4\\n}\",\n  \"{\\n  \\\"assignUser\\\" : false,\\n  \\\"transliteration\\\" : \\\"'Imran\\\",\\n  \\\"lessonNumber\\\" : 1,\\n  \\\"seen\\\" : 4,\\n  \\\"arabicWord\\\" : \\\"عِمْرَان\\\\n\\\",\\n  \\\"translation\\\" : \\\"Imran\\\",\\n  \\\"priority\\\" : 3\\n}\"\n]"

或者这个

代码语言:javascript
复制
 [
"{\n  \"assignUser\" : false,\n  \"transliteration\" : \" mann\",\n  \"lessonNumber\" : 4,\n  \"seen\" : 2,\n  \"arabicWord\" : \"مَنْ\",\n  \"translation\" : \" who\",\n  \"priority\" : 10\n}",
            "{\n  \"assignUser\" : false,\n  \"transliteration\" : \"'inda\",\n  \"lessonNumber\" : 4,\n  \"seen\" : 2,\n  \"arabicWord\" : \"عِندَ\",\n  \"translation\" : \"near\\\/with\",\n  \"priority\" : 10\n}"
]

我们将其保存到firebase并将其编码\到它,现在我需要这种格式再次从gson中读取。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 13:58:40

您需要解析已损坏的JSON两次。

一次获取字符串列表:

代码语言:javascript
复制
val listOfStrings = Gson().fromJson(wordReview, mutableListOf<String>().javaClass)

另一个解析每个字符串。

或者作为地图:

代码语言:javascript
复制
val asMap = Gson().fromJson(listOfStrings[0], mutableMapOf<String, Any>().javaClass)

或作为一个对象:

代码语言:javascript
复制
data class MyObj(val assignUser: Boolean,
                 val transliteration: String,
                 val lessonNumber: Float,
                 val seen: Float,
                 val arabicWord: String,
                 val translation: String,
                 val priority: Float)

val asObject = Gson().fromJson(listOfStrings[1], MyObj::class.java)

若要将其转换回一旦修改后的字符串,您可以使用:

代码语言:javascript
复制
Gson().toJson(asObject)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51777441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档