【问题标题】:JSON GSON.fromJson Java ObjectsJSON GSON.fromJson Java 对象
【发布时间】:2011-03-15 16:31:34
【问题描述】:

我正在尝试将我的 Json 加载到我的班级中

public User() {
    this.fbId = 0;
    this.email = "";
    this.name = "";
    this.thumb = "";
    this.gender = "";
    this.location = "";
    this.relationship = null;
    this.friends = new ArrayList();
}
{
    users:{
        user:{
            name:'the name',
            email:'some@email.com',
            friends:{
                user:{
                    name:'another name',
                    email:'this@email.com',
                    friends:{
                        user:{
                            name:'yet another name',
                            email:'another@email.com'
                        }
                    }
                }
            }
        }
    }
}

我正在努力让 GSON 使用以下代码将用户详细信息加载到上述 Java 对象中

User user = gson.fromJson(this.json, User.class);

【问题讨论】:

  • 那是 XML,不是 JSON,伙计。 ...好的,您编辑了您的问题。向我们展示 JSON! 还有,那是构造函数,不是类。
  • 抱歉,代码部分做了噩梦,哈哈
  • 阅读stackoverflow.com/editing-help。这只是 Markdown。
  • 对,我是他们之前从来没有遇到过这样的问题,哈哈,对不起,谢谢大家的快速回复,很抱歉给你带来麻烦
  • 它的构造函数来自类的所有属性,认为将 Json 与示例中的类匹配可能会有所帮助:)

标签: java json gson


【解决方案1】:

JSON 无效。集合不能由{} 表示。它代表一个对象。集合/数组将由 [] 表示,并带有逗号分隔的对象。

以下是 JSON 的外观:

{
    users:[{
        name: "name1",
        email: "email1",
        friends:[{
            name: "name2",
            email: "email2",
            friends:[{
                name: "name3",
                email: "email3"
            },
            {
                name: "name4",
                email: "email4"
            }]
        }]
    }]
}

(注意我在嵌套最深的朋友中添加了一个朋友,以便您了解如何在集合中指定多个对象)

鉴于此 JSON,您的包装类应如下所示:

public class Data {
    private List<User> users;
    // +getters/setters
}

public class User {
    private String name;
    private String email;
    private List<User> friends;
    // +getters/setters
}

然后转换它,使用

Data data = gson.fromJson(this.json, Data.class);

要获得用户,请使用

List<User> users = data.getUsers();

【讨论】:

  • 感谢 Balus C,我使用了一个工具将我的测试数据从 XML 转换为 JSON,这是我必须学习的一课,不要相信第三方网站来完成我应该做的工作。
  • 大家好在解决方案中使用了这个:gson.fromJson(this.json, User.class);我想知道 this.json 是什么。它是一个json对象还是什么?如果它是一个硬编码的 json 对象,那么我们应该在哪里创建该对象以使用 this.json 访问它?
  • @Piscean:它只是输入的 JSON 字符串。另请参阅原始问题和 Gson 手册。如果你想不通,只需按右上角的 按钮。
猜你喜欢
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
相关资源
最近更新 更多