У меня есть этот фрагмент JSON. Моя проблема заключается в том, что ключ в соответствии с транзакциями {} В этом примере он установлен на «запрос идентификатор 000002», однако это является частью ответа на запрос API, и это значение изменится. Это всегда будет то, что находится между [] в свойстве «найдена детализации», но я не узнаю, что это такое, пока не опубликую запрос и не получу ответ. < /P>
"response_state" : {
"filter_records_removed" : 0,
"filter_records_reviewed" : 1,
"filter_redaction" : false,
"found" : 1,
"found_detail" : "Found Records [Request ID 000002] available the time of query",
"missing" : 0,
"results" : true,
"transactions" : {
"Request ID 000002" : {
"complete" : false,
"confirmed" : false,
"event_transaction_id" : "Request ID 000002",
"event_type" : "software_update",
"expiration_mark" : false,
"expiry" : 1727559823240
}
}
< /code>
Это класс Java. Я не могу действительно определить значение @SerializedName заранее, как это здесь, в примере. < /P>
public class EFDTransactions {
@SerializedName("Request ID 000002")
@Expose private EFDTransaction transaction;
public EFDTransactions() {
// TODO Auto-generated constructor stub
}
public EFDTransaction getTransaction() {
return transaction;
}
public void setTransaction(EFDTransaction transaction) {
this.transaction = transaction;
}
< /code>
Я пытаюсь создать структуру класса, чтобы я мог сделать что -то подобное, где я уже создал jsonobject из строки JSON, который был возвращен из запроса API: < /p>
Gson rspgson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation()
.create();//new Gson();
//responsejobj is the JsonObject created from the JSON string that is the response
EFDTransactions trans = rspgson.fromJson(responsejobj,EFDTransactions.class);
< /code>
мне нужно написать пользовательский десериализатор? Я нашел этот поток при использовании отражения, чтобы изменить значение аннотации @SerializedName. Я еще не пробовал. Есть ли другой подход? Карта была нулевой после Frachjson (). Он работает с использованием приведенного выше класса с известным тестовым значением для @SerializedName:
установить динамическую сериализованную аннотацию в Android Java < /p>
Вот тот же класс, который я создал с картой < /p>
public class efdtransactions {< /p>
public class efdtransactions {< /p>
public class {< /p>
@Expose public Map transaction;
public EFDTransactions() {
// TODO Auto-generated constructor stub
}
public Map getTransaction() {
return transaction;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... th-dynnami