Например, я получаю следующий ответ JSON:
{
"metadata": {
"provider": "ABC"
},
"results": [
{
"id": "ace",
"language": "en",
"lexicalEntries": [
{
"lexicalCategory": "Noun"
},
{
"lexicalCategory": "Adjective"
},
{
"lexicalCategory": "Verb"
}
],
"type": "headword",
"word": "ace"
}
]
}
Я использую Retrofit2.0 и gson для его анализа и сопоставления с классами POJO следующим образом:
class QueryResponse {
public Metadata metadata;
public List<Result> results = null;
}
class Result {
public String id;
public String language;
public List<LexicalEntry> lexicalEntries = null;
public String type;
public String word;
}
class LexicalEntry {
public String lexicalCategory;
}
onResponse () выглядит следующим образом:
@Override
public void onResponse(Call<QueryResponse> call, Response<QueryResponse> response) {
if (response.code() == 200) {
Result result = response.body().results.get(0);
lexicalEntries = result.lexicalEntries;
}
}
Теперь у меня есть другой метод, в котором я хочу создать свой собственный объект LexicalEntry (а именно, updatedLexicalEntry) и скопировать значение изчто было извлечено из JSON, а затем измените его по-своему для дальнейшего использования.
private void createSubWords(List<LexicalEntry> lexicalEntries) {
LexicalEntry revisedLexicalEntry;
for (int x = 0; x < lexicalEntries.size(); x++) {
revisedLexicalEntry = lexicalEntries.get(x);
revisedLexicalEntry.lexicalCategory = "Something...";
}
}
Что происходит, когда позже я пытаюсь получить lexicalCategory исходного JSON (lexicalEntries.get (x) .lexicalCategory), он также изменяется на «Что-то ...» вместо того, что было его первоначальным значением.
Как мне достичь своей цели - сохранить ценность оригиналов, но скопировать и изменить ее для дальнейшего использования?Я просто надеюсь, что достаточно ясно изложил свой вопрос.
Заранее спасибо!
PS, фактический JSON, с которым я работаю, гораздо сложнее, но я упростил его здесь для лучшего понимания.и более быстрые предложения.