android - 如何在 kotlin 中生成 json 对象?
问题描述
我真的是编程新手,最近在 Kotlin 中使用 Android Studio 启动了一个项目。
所以,我对 JSON 对象有疑问。我从一个 BroadcastReceiver 对象获取数据,更具体地说是一个字符串,具有以下格式:
{"s1":1}
这是一个简单的字符串。所以我接受了一个函数调用 toJson 并且我这样做了。
private fun toJson(data:String): JSONObject {
var newData: String = data.replace("\"","")
newData = newData.replace("{","")
newData = newData.replace("}","")
val newObject = newData.split(":")
val name = newObject[0]
val value = newObject[1]
val rootObject = JSONObject()
rootObject.put(name,value)
return rootObject
}
我这样做是正确的方式?,我该如何改进我的代码?
感谢您的帮助,对不起我的英语!
解决方案
欢迎来到 StackOverflow!
在 2019 年,没有人真正手动解析 JSON。使用Gson库要容易得多。它将您的对象作为输入并吐出 JSON 字符串,反之亦然。
例子:
data class MyClass(@SerializedName("s1") val s1: Int)
val myClass: MyClass = Gson().fromJson(data, MyClass::class.java)
val outputJson: String = Gson().toJson(myClass)
这样您就不会直接使用 JSON 字符串,而是使用类型安全且更方便的 Kotlin 对象。查看文档。它很大而且很容易理解
这里有一些教程:
- https://www.youtube.com/watch?v=f-kcvxYZrB4
- http://www.studytrails.com/java/json/java-google-json-introduction/
- https://www.tutorialspoint.com/gson/index.htm
更新:如果你真的想使用 JSONObject ,那么使用它的构造函数和一个字符串参数来自动解析你的 JSON 字符串。
val jsonObject = JSONObject(data)
推荐阅读
- c++ - 如何为我的游戏设置主菜单场景?QT C++
- node.js - 如何使用 listObjectV2 和 NodeJs 从 S3 AWS 获取对象列表?
- java - 如何找到所有可用的 JDBC 驱动程序?
- android-studio - 如何在 Flutter 项目中解析符号 @mipmap 和 @style?
- c# - 我如何将 IUnitOfWork 与 BaseController 一起使用
- python - Python 字符串表达式格式
- matlab - '[' 处的解析错误:用法可能是无效的 MATLAB 语法
- javascript - 重新加载后比较数据表的数据,如果数据不变,则以红色突出显示行
- javascript - 截取在 iframe 中播放的 youtube 视频的屏幕截图
- css - 哪个变体更适合为整个文档指定 box-sizing?