我从服务器获得以下json。它是一个具有不同对象的json数组。我想基于键“type”识别用户对象,并将它们添加到用户hashmap并获取用户以在我的视图中显示包含“payments”对象的信息。我正在使用gson和改造。 TIA
"included":[
{
"id":"1",
"type":"payments",
"attributes":{
"amount_cents":100,
"amount_currency":"INR",
"description":"Test description!!",
"created_at":"2016-03-01T11:30:53Z",
"status":"paid",
"paid_at":null,
"charged_at":null,
"formatted_amount":"Rs1.00"
},
"relationships":{
"sender":{
"data":{
"id":"2",
"type":"users"
}
},
"receiver":{
"data":{
"id":"1",
"type":"users"
}
}
}
},
{
"id":"2",
"type":"users",
"attributes":{
"first_name":"Rob",
"last_name":"Thomas"
}
},
{
"id":"1",
"type":"users",
"attributes":{
"first_name":"Matt",
"last_name":"Thomas"
}
}]
我的课程
public class ActivityFeedItem implements IFeedItem {
@SerializedName("id")
String id;
@SerializedName("type")
String type;
@SerializedName("attributes")
Attributes attributes;
protected class Attributes {
double amount_cents;
String amount_currency;
String description;
String created_at;
String status;
String paid_at;
String charged_at;
String formatted_amount;
Relationships relationships;
public double getAmount_cents() {
return amount_cents;
}
public String getAmount_currency() {
return amount_currency;
}
public String getDescription() {
return description;
}
public String getCreated_at() {
return created_at;
}
public String getStatus() {
return status;
}
public String getPaid_at() {
return paid_at;
}
public String getCharged_at() {
return charged_at;
}
public String getFormatted_amount() {
return formatted_amount;
}
public Relationships getRelationships() {
return relationships;
}
}
}
和
public class UserFeedItem implements IFeedItem {
@SerializedName("id")
String id;
@SerializedName("type")
String type;
@SerializedName("attributes")
Attributes attributes;
public class Attributes {
@SerializedName("first_name")
String first_name;
@SerializedName("last_name")
String last_name;
}
}
答案 0 :(得分:0)
如果您只是将JSON响应字符串放入JSONArray
,这非常简单。然后,您只需访问type
字段并测试它是否为users
。像这样:
JSONArray jsonArray = new JSONArray(yourServerResponseString);
for(int i=0; i<jsonArray.length(); i++) {
JSONObject object = (JSONObject) jsonArray.get(i);
String type = object.getString("type");
if(type.equals("users")) {
//add to your users HashMap
}
}
答案 1 :(得分:0)
首先使用GSON从JSON创建一个对象数组,如下所示
Gson gson= new Gson();
String jsonString= yourJsonObject.getString("included");
ActivityFeedItem[] activityFeedArray=gson.fromJson(jsonString,ActivityFeedItem[].class);
现在您的activityFeedArray包含您在JSON中获得的所有feedItem。然后你可以像在任何数组中那样迭代它,并在type为user时添加到hashmap -
for(ActivityFeedItem item:activityFeedArray) {
if(item.type.equals("users")) {
//add to your users HashMap
}
}