sky*_*ine 9 android json jackson
我通过点击网址获得了一些json响应.我想用jackson来解析json的响应.我尝试使用对象Mapper,但我得到了异常.
JSON:
{
"contacts": [
{
"id": "c200",
"name": "ravi raja",
"email": "raja@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "c201",
"name": "Johnny Depp",
"email": "johnny_depp@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
]
}
Run Code Online (Sandbox Code Playgroud)
POJO:
public class ContactPojo {
String name,email,gender,mobileno;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getMobileno() {
return mobileno;
}
public void setMobileno(String mobileno) {
this.mobileno = mobileno;
}
}
Run Code Online (Sandbox Code Playgroud)
码:
ObjectMapper mapper=new ObjectMapper();
userData=mapper.readValue(jsonResponse,ContactPojo.class);
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,json不是数组,而是包含一个包含数组的对象的对象,因此您需要创建一个临时数据持有者类,以便Jackson对其进行解析.
private static class ContactJsonDataHolder {
@JsonProperty("contacts")
public List<ContactPojo> mContactList;
}
public List<ContactPojo> getContactsFromJson(String json) throws JSONException, IOException {
ContactJsonDataHolder dataHolder = new ObjectMapper()
.readValue(json, ContactJsonDataHolder.class);
// ContactPojo contact = dataHolder.mContactList.get(0);
// String name = contact.getName();
// String phoneNro = contact.getPhone().getMobileNro();
return dataHolder.mContactList;
}
Run Code Online (Sandbox Code Playgroud)
对你的班级进行一些调整:
@JsonIgnoreProperties(ignoreUnknown=true)
public class ContactPojo {
String name, email, gender;
Phone phone;
@JsonIgnoreProperties(ignoreUnknown=true)
public static class Phone {
String mobile;
public String getMobileNro() {
return mobile;
}
}
// ...
public Phone getPhone() {
return phone;
}
Run Code Online (Sandbox Code Playgroud)
@JsonIgnoreProperties(ignoreUnknown = true)注释确保当你的类不包含json中的属性时,你没有得到异常,就像address你的json可以给出异常,或者home在Phone对象中.
| 归档时间: |
|
| 查看次数: |
24370 次 |
| 最近记录: |