为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Kotlin中解析JSON?

如何在Kotlin中解析JSON?

紫衣仙女 2019-11-30 10:12:04
我从服务中收到一个很深的JSON对象字符串,我必须将其解析为JSON对象,然后将其映射到类。如何在Kotlin中将JSON字符串转换为对象?在映射到各个类之后,我使用了Jackson的StdDeserializer。当对象具有必须反序列化为类的属性时,就会出现问题。我无法在另一个反序列化器中获取对象映射器,至少我不知道该怎么做。在此先感谢您的帮助。最好是在本地,我试图减少所需的依赖项数量,因此,如果答案仅用于JSON操作并进行解析就足够了。
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

没有外部库(在Android上)

要解析此:


val jsonString = """

    {

       "type":"Foo",

       "data":[

          {

             "id":1,

             "title":"Hello"

          },

          {

             "id":2,

             "title":"World"

          }

       ]

    }        

"""

使用这些类:


import org.json.JSONObject


class Response(json: String) : JSONObject(json) {

    val type: String? = this.optString("type")

    val data = this.optJSONArray("data")

            ?.let { 0.until(it.length()).map { i -> it.optJSONObject(i) } } // returns an array of JSONObject

            ?.map { Foo(it.toString()) } // transforms each JSONObject of the array into Foo

}


class Foo(json: String) : JSONObject(json) {

    val id = this.optInt("id")

    val title: String? = this.optString("title")

}

用法:


val foos = Response(jsonString)


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 2705 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信