如何在Kotlin中解析JSON?

我从一个服务接收到一个相当深的JSON对象字符串,我必须解析到一个JSON对象,然后将其映射到类。

如何将JSON字符串转换为Kotlin中的对象?

之后,映射到相应的类,我使用杰克逊的StdDeserializer。 问题出现在对象具有也必须被反序列化为类的属性的时刻。 我无法得到对象映射器,至少我不知道如何,在另一个反序列化器内。

在此先感谢您的帮助。 最好,本地,我试图减少我需要的依赖关系的数量,所以如果答案只是对JSON的操纵和分析它就够了。

你可以使用这个库https://github.com/cbeust/klaxon

Klaxon是一个轻量级的库,用于解析Kotlin中的JSON。

不知道这是你需要的,但这是我做到的。

使用import org.json.JSONObject:

val jsonObj = JSONObject(json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1)) val foodJson = jsonObj.getJSONArray("Foods") for (i in 0..foodJson!!.length() - 1) { val categories = FoodCategoryObject() val name = foodJson.getJSONObject(i).getString("FoodName") categories.name = name } 

下面是json的示例:{“Foods”:{“FoodName”:“Apples”,“Weight”:“110”}}

我个人使用杰克逊模块kotlin,你可以在这里找到:github.com/FasterXML/jackson-module-kotlin。

作为一个例子,下面是解析Exile skilltree路径的json的代码,它很重(格式化的时候有84k行):

  • kotlin代码: http ://pastebin.com/iLY7hbhf
  • (未格式化的)json: http : //filebin.ca/3B3reNQf3KXJ/rawSkilltree.json

鉴于你的描述,我相信它符合你的需求。