Как получить конкретное значение объекта JSON - PullRequest
0 голосов
/ 09 июля 2019

В приведенном ниже коде я делаю HTTP-запрос для получения некоторых данных с определенного URL-адреса. Я хотел бы получить результат объекта "continue", который показан ниже в разделе JSON. Я создал объектную модель, как показано ниже в коде. однако результат, который я получаю из «смещения» и «продолжения», является нулевым, несмотря на то, что они содержат значения.

Я исследовал URL через JSON Validate

Ссылка: JSONResponse

активность

class MainActivity : AppCompatActivity(){

val LOG_TAG : String = this::class.java.simpleName
var mEditTextSearch : EditText? = null
var mButtonCheckResult : Button? = null
var mTextView : TextView? = null

//as comm. channel between backend and frontend
val WikiApiServe by lazy {
    WikiApiService.create();
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    initViews()
}

private fun beginSearch(srsearch : String) {
    WikiApiServe.hitCountCheck("query", "json","search", srsearch)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            {result ->
                Log.e(LOG_TAG, "error.message: " + result.query.searchinfo.totalhits)
            },
            {error -> Log.e(LOG_TAG, "error.message: " + error.message)}
        )

    WikiApiServe.hitContinueAsSrOffsetInt("query", "json","search", srsearch)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            {result ->
                Log.e(LOG_TAG, "error.message: " + result.sroffset)
            },
            {error -> Log.e(LOG_TAG, "error.message: " + error.message)}
        )


    WikiApiServe.hitContinueAsContinueString("query", "json","search", srsearch)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            {result ->
                Log.e(LOG_TAG, "error.message: " + result.cont)
            },
            {error -> Log.e(LOG_TAG, "error.message: " + error.message)}
        )
}


fun initViews() : Unit {
    mEditTextSearch = findViewById(R.id.etSearchEntry)
    mButtonCheckResult = findViewById(R.id.btnCheckSearchResult)
    mTextView = findViewById(R.id.tvResult)
}

public fun clickHandler(v : View?) : Unit {

    when(v?.id) {
        R.id.btnCheckSearchResult -> {
            beginSearch("Melania Trump")
        }
    }
}
}

objectModel

object Model {
data class ResultOfQuery(val query: Query)
data class Query(val searchinfo: SearchInfo)
data class SearchInfo(val totalhits: Int)

data class ResultOfContinueAsSrOffsetInt(val sroffset: Sroffset)
data class Sroffset(val sroffset: Int)
data class ResultOfContinueAsContinueString(val cont: Continue)
data class Continue(val cont: String)

JSON

{ пакетное завершение: "", Продолжить: { sroffset: 10, продолжить: "- ||" }, запрос: { searchinfo: {} } }

результат

2019-07-09 16:09:50.037 15818-15818/com.example.retrofitkotlin_v10 D/MainActivity: result.query.searchinfo.totalhits: 26505
2019-07-09 16:09:55.332 15818-15818/com.example.retrofitkotlin_v10 D/MainActivity: result.sroffset: null
2019-07-09 16:09:55.386 15818-15818/com.example.retrofitkotlin_v10 D/MainActivity: result.cont: null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...