7

我想知道是否有一个网页/软件可以将 Json 提要对象“翻译”为具有属性的 Java 对象。

例如 :

{
            'firstName': 'John',
            'lastName': 'Smith',
            'address': {
                'streetAddress': '21 2nd Street',
                'city': 'New York'
            }
        }

会成为:

class Person {
    private String firstName;
    private String lastName;
    private Address address;

    public String getFirstName() { return firstName; }
    public String getLastName() { return lastName; }
    public Address getAddress() { return address; }

    public void setFirstName(String firstName) { this.firstName = firstName; }
    public void setLastName(String lastName) { this.lastName = lastName; }
    public void setAddress(Address address) { this.address = address; }

    public String toString() {
        return String.format("firstName: %s, lastName: %s, address: [%s]", firstName, lastName, address);
    }
}

class Address {
    private String streetAddress;
    private String city;

    public String getStreetAddress() { return streetAddress; }
    public String getCity() { return city; }

    public void setStreetAddress(String streetAddress) { this.streetAddress = streetAddress; }
    public void setCity(String city) { this.city = city; }

    public String toString() {
        return String.format("streetAddress: %s, city: %s", streetAddress, city);
    }
}

我不是因为我很懒才问这个,但是我想解析的 JSON 有很多属性。

4

2 回答 2

2

我已经成功使用json-lib进行 json 序列化和反序列化。您的示例如下所示:

String json = "{'firstName': 'John', 'lastName': 'Smith', 'address': {'streetAddress': '21 2nd Street', 'city': 'New York'}}";
JSONObject jsonObject = JSONObject.fromObject(json);
Person bean = (Person) JSONObject.toBean(jsonObject, Person.class);
System.out.println(bean);

和版画

firstName: John, lastName: Smith, address: [streetAddress: 21 2nd Street, city: New York]

如果您需要自定义它,有很多扩展钩子。在我的应用程序中,我添加了对将语言环境序列化为字符串“sv_SE”而不是对象的支持。并将相同的字符串反序列化为 Locale 对象。

于 2010-04-14T07:37:23.660 回答
1

您可能想看看 Google 的 JSON Java 库 Gson。它具有将对象从 Java 序列化为 JSON 以及从 JSON 反序列化为 Java 对象的方法。

我从来没有将它用于反序列化,所以我无法提供更多细节,例如它如何处理嵌套对象(地址),但我想它能够处理它。

API 文档: http: //google-gson.googlecode.com/svn/tags/1.3/docs/javadocs/index.html 用户指南:https ://sites.google.com/site/gson/gson-user -指导

祝你好运 !

于 2010-04-14T07:23:29.510 回答