gpt4 book ai didi

java - 如何在json中指定特定的对象路径

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:53 25 4
gpt4 key购买 nike

我使用 json4s 将 json 解析为我的 scala 案例类对象,第一个效果很好:

case class Person(Id: String, name: String)

val personJSON = """[ {"Id": "1","name": "john"},
{"Id": "2","name": "george"},
{"Id": "3","name": "tom"},
{"Id": "4","name": "tammy"},
{"Id": "5","name": "melanie"} ]""".stripMargin

val listOfPersonAsObjects = JsonMethods.parse(personJSON).extract[List[Person]]

工作完美,没问题。

但是现在 json 里面有对象:

case class Animal(name: String, age: String)

val animalsJSON = """{ "animals":[ {"name": "giraffe","age": "12"},
{"name": "lion","age": "4"},
{"name": "snake","age": "5"},
{"name": "tiger","age": "3"},
{"name": "elephant","age": "7"}] }""".stripMargin

所以现在我需要解析 json 中的“animals:”对象...

我的想法是这样的:

val listOfAnimalsAsObjects = JsonMethods.parse(animalsJSON[0]).extract[List[Animal]]

但它不起作用...我如何指定我想要 json 中的“animals:”对象?

我无法更改 json,这正是我获取它的方式

谢谢!

最佳答案

不适合您的 JSON 不是列表。它是一个包含列表的对象。因此,您的对象需要匹配该结构。

类似这样的事情:

class AnimalListContainer
{
List<Animal> Animals;
public AnimalListContainer()
{
Animals = new ArrayList<>();
}
}

然后当你尝试解析时:

val animalListContainer = JsonMethods.parse(animalsJSON[0]).extract[AnimalListContainer]

(未经测试的代码 - 对于任何语法错误深表歉意)。

关于java - 如何在json中指定特定的对象路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39944176/

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