gpt4 book ai didi

java - 在 Android 中使用 GSON 反序列化 JSON 字符串

转载 作者:行者123 更新时间:2023-11-30 04:19:23 25 4
gpt4 key购买 nike

这可能有点长,所以请耐心等待..

我正在使用 Android 开发一个项目。我有一个 JSON 字符串,我需要将其反序列化为表示 JSON 结构的对象,JSON 字符串如下所示:

{"parents":[
{"parent":{
"id":1,
"name":"Sam",
"childs":[
{
"child":{
"id":1,
"name":"Alice",
"books":[
{
"book":{
"id":1,
"name":"Alice in Wonderland"
}
}
]
}
}
]
}

}
]}

请注意,对于数组有重复值(即许多父项和许多子项),我只在此处放一行以使其简短。

有了这个,我创建了类来适应结构:

public class Containers{
private List<Parent> parents;
//setter and getter..
}

public static class Parent extends CommonItem {
private List<Child> childs;
//setter and getter..
}

public static class Child extends CommonItem {
private List<Book> books;
//setter and getter..
}

public class CommonItem{
private int id;
private String name;
//setter and getter
}

请注意,我已经创建了一个通用类来容纳重复属性。下面是我如何使用 GSON 解析它们:

Gson gson = new Gson();
Containers parents = gson.fromJson(jsonString, Containers.class);

解析后(没有错误)我尝试检索对象。父列表中的对象计数是正确的(即 JSON 字符串中有 5 个父对象,父列表中有 5 个父对象)。但是,它们的所有属性都不存在,子树也丢失了。

我尝试了很多配置,包括删除扩展类并将所有 id 和名称放入各自的类中,但结果仍然相同。

谁能告诉我哪里出错了?

非常感谢!

最佳答案

您的 JSON 和 Java 类不匹配。

让我们阅读

{"parents":[
{"parent":{
"id":1,
"name":"Sam",
"childs":[
{
"child":{
"id":1,
"name":"Alice",
"books":[
{
"book":{
"id":1,
"name":"Alice in Wonderland"
}
}
]
}
}
]
}

}
]}

您的顶级对象有一个 List 类,它有 parents 作为它的属性。您的 Java 类 Container 具有 parents 属性。好。

现在这个列表 parents 是一个包含 parent 属性的对象的 List。您的 Parent 对象是否具有 parent 属性?没有。

再往下看,每个Parent都有idname和一个List对象作为childs (children, should be) 属性有child属性,你的Child类有吗?没有。

同样,适用于书籍

你试过像 JSON 这样的类吗

{"parents":[
{
"id":1,
"name":"Sam",
"childs":[
{
"id":1,
"name":"Alice",
"books":[
{
"id":1,
"name":"Alice in Wonderland"
}
]
}

]
}
]}

关于java - 在 Android 中使用 GSON 反序列化 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9498197/

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