解析的gson在Kotlin中返回null

时间:2018-09-10 14:20:45

标签: android json kotlin gson

我是编程新手, 我试图从Yahoo Weather API中获取日出/日落时间,并在Ui上烤面包

(我正在使用gson和anko库) 这是我的主要活动代码:

import QtQuick 2.7
import QtQuick.Controls 2.4

ApplicationWindow {
    title: "Qt Quick Controls Gallery"
    width: 640
    height: 480
    visible: true // <---
}

我应该在哪里修理?

谢谢

2 个答案:

答案 0 :(得分:0)

嘿,易卜拉欣·科什诺德!

欢迎使用StackOverflow。问题似乎是,您尚未为天文学的父对象创建POJO(类)。如果只想使用Gson解析所有内容,则必须创建用于“查询”,“结果”,“通道”的对象,然后在通道内部可以具有天文对象。

例如,您可能会有类似的东西。

class Query(val results: List<Channel>?)
class Channel(val astronomy: astronomy?) // astronomy? is the class you have posted.

然后您可以解析所有此类内容

val query = gson.fromJson(body, astronomy::class.java)
val astronomy = query.results?.astronomy

答案 1 :(得分:0)

您从该Yahoo!得到的答复API不仅限于天文学部分。您有两个选择(一个实选项和一个用于检查事物的临时选项):

  • 创建许多模型来解析整个堆栈(这意味着您将拥有一个Query类,其属性为countcreatedlang和{{ 1}})。这将是更好的方法,因为您将在处理过程中的每一步都处理真实的类。
results
  • 将整个字符串放入通用data class Query(val count: Int?, val created: String?, val lang: String?, val results: Results?) data class Results(val channel: Channel?) //Channel should include more fields for the rest of the data data class Channel(val astronomy: Astronomy?) data class Astronomy(val sunrise: String?, val sunset: String?) (这是GSON提供的类)中,并遍历该对象(JsonObject-> query-> results-> { {1}}-> channelastronomy)。这不是正确的方法,但可以确保输入正确的数据:
sunrise