如果 JSON 中存在值,则中断,但如果值为 null,则返回(kotlin)

Posted

技术标签:

【中文标题】如果 JSON 中存在值,则中断,但如果值为 null,则返回(kotlin)【英文标题】:Break if value exists in JSON, but if value is null then return (kotlin) 【发布时间】:2021-04-04 00:32:07 【问题描述】:

我正在尝试学习 kotlin,并且遇到了一个名为 klaxon 的用于解析 JSON 的库。如果我从输入中得到的值为空,我希望程序不断重复。否则,如果我输入的密钥确实存在,我希望程序中断。我的程序没有按我的预期工作,但如果我删除 break,即使值为 null,程序也会永远循环。

这是我的代码:

import java.net.*
import com.beust.klaxon.*
import java.util.*
import kotlin.text.*
 
fun webRequest(url: String) 
    val uri = URL(url).readText()
    val parser: Parser = Parser.default()
    val stringBuilder: StringBuilder = StringBuilder(uri)
    val json: JsonObject = parser.parse(stringBuilder) as JsonObject
 
    println(json)
    val input: String? = readLine()
    do 
        println(json)
        if (input == null) 
            println("value doesn't exist")
         else 
            println(json.string(input))
            break
        
     while (true)

 
fun main() 
    webRequest("https://api.github.com")

【问题讨论】:

【参考方案1】:

您只读取一次输入。 您应该在循环内执行 readline() 以获得所需的行为:

var input: String? = readLine()
while (input.isNullOrEmpty()) 
    println("value doesn't exist")
    input = readLine()

println(json.string(input))

【讨论】:

以上是关于如果 JSON 中存在值,则中断,但如果值为 null,则返回(kotlin)的主要内容,如果未能解决你的问题,请参考以下文章

Mysql如果某个字段值存在则更新另一个字段的值为原值+100,命令应该如何写?

检查 JSON 数组中是不是存在值,如果不存在则检查下一个数组(Swift / SwiftUI)

如果 JSON 列中存在值(user_id),则获取 mysql 行

使用连接更新表,如果不存在则为 NULL

如果对象存在于全局中,则R从函数中从全局环境中获取对象,但如果不存在则使用不同的默认值

如果python中的值为true,则返回值