gpt4 book ai didi

json - 克拉克森:希望有个名字,但得到了LEFT_BRACE

转载 作者:行者123 更新时间:2023-12-02 13:14:21 25 4
gpt4 key购买 nike

如何使用Klaxon读取“复杂” JSON?
我正在尝试使用klaxon的流api as documentation say

我正在使用beginObject方法。如果我使用示例中给出的json,一切都很好

val objectString = """{
"name" : "Joe",
"age" : 23,
"flag" : true,
"array" : [1, 3],
"obj1" : { "a" : 1, "b" : 2 }
}"""

但是,如果我尝试使用嵌套对象来解析json(如以下示例),则会出现以下错误:“预期名称,但有LEFT_BRACE”
val objectString = """{
"name" : "Joe",
"age" : 23,
"flag" : true,
"array" : [1, 3],
"obj1" : {
"hello": { "a" : 1, "b" : 2 }
}
}"""

我没有在github仓库中看到任何报告的问题,所以我想知道是否有办法使它工作。

干杯

最佳答案

好的,所以我检查了源代码,似乎nextObject()假定您正在处理一个简单的键值对象,其中值不是对象。

无论如何,还有另一种方式可以解析您指定格式的JSON,如下所示:

val objectString = """{
"name" : "Joe",
"age" : 23,
"flag" : true,
"array" : [1, 2, 3],
"obj1" : { "hello": {"a" : 1, "b" : 2 } }
}"""

class ABObj(val a: Int, val b: Int)

class HelloObj(val hello: ABObj)

class Obj(val name: String, val age: Int, val flag: Boolean, val array: List<Any>, val obj1: HelloObj)


val r = Klaxon().parse<Obj>(objectString)

// r is your parsed object
print(r!!.name) // prints Joe
print(r!!.array) // prints [1, 2, 3]

我创建的类如下:
ABObj表示以下JSON:
{"a": 1, "b": 2}
HelloObj表示以下JSON:
{"hello": {"a": 1, "b": 2}}

最后, Obj引用顶级对象。

希望这可以帮助。

关于json - 克拉克森:希望有个名字,但得到了LEFT_BRACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48272725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com