我正在尝试将以下Json数组响应解组到RestTemplate中的pojos集合。
[{
"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_code": "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_code":"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",
}
}]
我创建了一个对应的Java Pojo类
public class Client {
@JsonProperty("id")
private String id;
@JsonProperty("name")
private String name;
@JsonProperty("currency")
private String currency;
@JsonProperty("address")
private String address;
@JsonProperty("city")
private String city;
@JsonProperty("province")
private String province;
@JsonProperty("zip_code")
private String zip_code;
@JsonProperty("country")
private String country;
@JsonProperty("full_address_with_comma")
private String full_address_with_comma;
@JsonProperty("phone")
private String phone;
@JsonProperty("fax")
private String fax;
@JsonProperty("custom_field_name")
private String custom_field_name;
@JsonProperty("custom_field_value")
private String custom_field_value;
@JsonProperty("created_at")
private String created_at;
@JsonProperty("updated_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 String getCurrency() {
return currency;
}
public void setCurrency(String 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_code() {
return zip_code;
}
public void setZip_code(String zip_code) {
this.zip_code = zip_code;
}
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;
}
}
我正在使用RestTemplate,但是我有一个带有空属性值的客户端数组。
Client[] clients= restTemplate.getForObject(requestUrl, Client[].class);
您的大多数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_code": "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_code": "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有一个email
字段,但您的Client
POJO没有email
字段,并且您currency
在POJO中声明的字段不是String
,它是一个具有两个字段的对象,因此您的Client
POJO应该为:
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_code;
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_code() {
return zip_code;
}
public void setZip_code(String zip_code) {
this.zip_code = zip_code;
}
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中不需要注释。
问题内容: 我正在尝试在我的Android应用程序中将JSONArray解析为和ArrayList。PHP脚本正确地重新调整了预期的结果,但是Java失败并在以下位置出现了空指针异常 问题答案: 尝试这样可能会帮助您,
问题内容: 我有一个ArrayList,可在ArrayAdapter中用于ListView。我需要将列表中的项目转换为JSONArray才能发送到API。我四处搜寻,但没有找到任何说明其工作方式的信息,我们将不胜感激。 更新-解决方案 这就是我最终要解决的问题。 ArrayList中的对象: 这是我的转换方式: 并输出: 希望有一天能对某人有所帮助! 问题答案: 如果我正确阅读了JSONArray
问题内容: 我今天在这个主题上搜索了很多。但是我找不到它,如何将JSONArray添加到JSONObject? 因为每次执行此操作都会收到此错误:Stackoverflow 我收到此错误: 我想要的JSON:只有最后一个JsonArray出问题了: ,“ vloer”:[{formaat:’vierkant10x15’tegels:[{naam:’‘,imgThumb:’/bla/bla.png’
问题内容: 大家好,我不是Json最好的。我试图通过循环将一些json对象添加到json数组中,但是问题是每次涉及到循环时,新数据也会遍历数组中的先前数据。这是我的代码: 给定X.size = 2的示例 我希望我的例子足够清楚。 如果有人能在这里帮助我,我将不胜感激。 问题答案: 您需要在循环的每次迭代中创建一个新的引用: 否则,您将一遍又一遍地更新同一实例,并将对同一对象的引用多次添加到数组中。
问题内容: 我正在使用Gson,并试图将一堆字符串值添加到这样的环境中: 问题在于add方法只需要一个。 我试图将一个String转换为一个,但是没有用。 我该如何使用Gson? 问题答案: 您可以创建一个将包含String值的原语并将其添加到数组中:
我正在使用Gson,并试图将一组字符串值添加到JsonArray中,如下所示: 问题是add方法只接受。 我试图将字符串转换为JsonElement,但没有成功。 我如何使用Gson做到这一点?
问题内容: 我有一个带有一些数组的JSON文件。我想遍历文件数组并获取它们的元素和它们的值。 这是我的文件的样子: 这是我走了多远: 是否可以做这样的事情? 我要这样做的原因是因为文件中的数组具有不同数量的元素。 问题答案: 更改 至 或者 取决于您使用的是JSON到/来自Java的库。(看起来将为您工作。) 然后,要访问“对象”中的字符串元素,请按元素名称将其取出。 如果需要中的元素名称,则可以
介绍 在JSON中,JSONArray代表一个数组,使用中括号包围,每个元素使用逗号隔开。一个JSONArray类似于这样: ["value1","value2","value3"] 使用 创建 //方法1 JSONArray array = JSONUtil.createArray(); //方法2 JSONArray array = new JSONArray(); array.add("