您的大多数POJO字段都是类型,
String但JSON的值中没有双引号(
"")。您的JSON应该如下所示才能有效:
[ { "client": { "id": "6364", "name": "7Seven7 Insurance Inc", "email": "donna@7seven7ins.com", "currency": { "name": "United States of America, Dollars", "symbol": "$" }, "address": "941 Elm Ave. #5 ", "city": "Long Beach", "province": "CA", "zip_pre": "90813", "country": "United States", "full_address_with_comma": "941 Elm Ave. #5, Long Beach, CA, 90813, United States", "phone": "562-556-4035", "fax": "562-381-7500", "custom_field_name": "listed", "custom_field_value": "false", "created_at": "2010-07-18T00:08:10Z", "updated_at": "2010-07-21T11:04:58Z" } }, { "client": { "id": "6365", "name": "Affinity", "email": "CGregory@affinitygroup.com", "address": "2575 Vista Del Mar ", "city": "Ventura", "province": "California", "zip_pre": "93001", "country": "United States", "full_address_with_comma": "2575 Vista Del Mar, Ventura, California, 93001, United States", "phone": "(270) 901-2913", "fax": "null", "currency": { "name": "United States of America, Dollars", "symbol": "$" }, "custom_field_name": "null", "custom_field_value": "null", "created_at": "2010-07-18T00:08:10Z", "updated_at": "2010-07-18T00:08:10Z" } }]另外,您的JSON有一个
ClientPOJO没有
currency在POJO中声明的字段不是
String,它是一个具有两个字段的对象,因此您的
ClientPOJO应该为:
public class Client { private String id; private String name; private String email; private Currency currency; private String address; private String city; private String province; private String zip_pre; private String country; private String full_address_with_comma; private String phone; private String fax; private String custom_field_name; private String custom_field_value; private String created_at; private String updated_at; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Currency getCurrency() { return currency; } public void setCurrency(Currency currency) { this.currency = currency; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getZip_pre() { return zip_pre; } public void setZip_pre(String zip_pre) { this.zip_pre = zip_pre; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getFull_address_with_comma() { return full_address_with_comma; } public void setFull_address_with_comma(String full_address_with_comma) { this.full_address_with_comma = full_address_with_comma; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getFax() { return fax; } public void setFax(String fax) { this.fax = fax; } public String getCustom_field_name() { return custom_field_name; } public void setCustom_field_name(String custom_field_name) { this.custom_field_name = custom_field_name; } public String getCustom_field_value() { return custom_field_value; } public void setCustom_field_value(String custom_field_value) { this.custom_field_value = custom_field_value; } public String getCreated_at() { return created_at; } public void setCreated_at(String created_at) { this.created_at = created_at; } public String getUpdated_at() { return updated_at; } public void setUpdated_at(String updated_at) { this.updated_at = updated_at; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}有一个新
Currency对象:
public class Currency { private String name; private String symbol; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSymbol() { return symbol; } public void setSymbol(String symbol) { this.symbol = symbol; }}另一方面,您正在尝试反序列化
Client对象数组,但是JSON是对象数组,其中每个对象都包含一个
Client对象,因此需要包装它:
public class Cliente { private Client client; public Client getClient() { return client; } public void setClient(Client client) { this.client = client; }}然后可以使用
restTemplate或使用反序列化JSON
ObjectMapper。
带有
restTemplate:
Cliente[] clients= restTemplate.getForObject(requestUrl, Cliente[].class);
使用
ObjectMapper(杰克逊的方法
genericMessageConverter完全相同,它使用
ObjectMapper如下):
Cliente[] clientes= mapper.readValue(jsonStr, Cliente[].class);
另一件事是,
@JsonProperty如果JSON字段在JSON和POJO中具有相同的名称,则在POJO中不需要注释。



