2016-04-14 2 views
0

Я пытался использовать GSON и JsonScheme2Pojo для отображения моего объекта json.Как сделать json-сопоставление на нескольких объектах json с одним и тем же ключом

До сих пор я создал этот класс.

public class MPayTransaction { 

@SerializedName("mp_request_type") 
@Expose 
private String mpRequestType; 
@SerializedName("status_code") 
@Expose 
private String statusCode; 
@SerializedName("amount") 
@Expose 
private String amount; 
@SerializedName("chksum") 
@Expose 
private String chksum; 
@SerializedName("pInstruction") 

/** 
* 
* @return 
*  The mpRequestType 
*/ 
public String getMpRequestType() { 
    return mpRequestType; 
} 

/** 
* 
* @param mpRequestType 
*  The mp_request_type 
*/ 
public void setMpRequestType(String mpRequestType) { 
    this.mpRequestType = mpRequestType; 
} 

/** 
* 
* @return 
*  The statusCode 
*/ 
public String getStatusCode() { 
    return statusCode; 
} 

/** 
* 
* @param statusCode 
*  The status_code 
*/ 
public void setStatusCode(String statusCode) { 
    this.statusCode = statusCode; 
} 

/** 
* 
* @return 
*  The amount 
*/ 
public String getAmount() { 
    return amount; 
} 

/** 
* 
* @param amount 
*  The amount 
*/ 
public void setAmount(String amount) { 
    this.amount = amount; 
} 

/** 
* 
* @return 
*  The chksum 
*/ 
public String getChksum() { 
    return chksum; 
} 

/** 
* 
* @param chksum 
*  The chksum 
*/ 
public void setChksum(String chksum) { 
    this.chksum = chksum; 
} 

/** 
* 
* @return 
*  The pInstruction 
*/ 
public int getPInstruction() { 
    return pInstruction; 
} 

/** 
* 
* @param pInstruction 
*  The pInstruction 
*/ 
public void setPInstruction(int pInstruction) { 
    this.pInstruction = pInstruction; 
} 

} 

, а затем я назвал класс следующим образом:

Gson gson = new Gson(); 
MPayTransaction mPayTransaction = gson.fromJson(jsonString, MPayTransaction.class); 

Это работает, и мне нужно только позвонить, например MPayTransaction.getAmount(), чтобы получить значение суммы;

Мне было интересно, как мне сопоставить несколько объектов json? пусть говорят, что предыдущая строка JSON как это:

{ 
"mp_request_type": "donePayment", 
"status_code": "00", 
"amount": "1.10", 
"chksum": "23259ef7e03266ada789bf5a30465469", 
"pInstruction": 0 
} 

, а затем, как об этом:

{ 
"mp_request_type": "donePayment", 
"status_code": "00", 
"amount": "1.10", 
"chksum": "23259ef7e03266ad23430465469", 
"pInstruction": 0 
}, 
{ 
"mp_request_type": "donePayment", 
"status_code": "100", 
"amount": "13.10", 
"chksum": "23259ef7e03g2r32fa30465469", 
"pInstruction": 0 
} 

как я получаю значение 2-го количества, которое 13.10 от MPayTransaction.getAmount()?

ответ

2

использование ArrayList <>, например

jsonString:

[{ 
"mp_request_type": "donePayment", 
"status_code": "00", 
"amount": "1.10", 
"chksum": "23259ef7e03266ad23430465469", 
"pInstruction": 0 
}, 
{ 
"mp_request_type": "donePayment", 
"status_code": "100", 
"amount": "13.10", 
"chksum": "23259ef7e03g2r32fa30465469", 
"pInstruction": 0 
}] 

разобрать эту строку в ArrayList <>:

Gson gson = new Gson(); 
Type collectionType = new TypeToken<Collection<MPayTransaction>>(){}.getType(); 
Collection<MPayTransaction> collObj = gson.fromJson(jsonString, collectionType); 
ArrayList<MPayTransaction> arrayList = new ArrayList<MPayTransaction>(collObj); 

затем получить значение 2 суммы:

arrayList.get(1).getAmount() 
+0

Работал для меня. Я использовал json "java.lang.reflect.Type" и "com.google.gson.reflect.TypeToken". – JeromeC