我想知道是否有一个网页/软件可以将Json feed对象“转换”为具有属性的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有很多属性。
答案 0 :(得分: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]
如果您需要自定义它,有很多扩展挂钩。在我的应用程序中,我添加了对将Locale序列化为字符串“sv_SE”而不是对象的支持。并将相同的字符串反序列化为Locale对象。
答案 1 :(得分: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-guide
祝你好运!