例如,我收到以下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对象(即revisionLexicalEntry)并从JSON中检索的值复制该值,然后以我自己的方式修改它以便进一步重用。 / p>
private void createSubWords(List<LexicalEntry> lexicalEntries) {
LexicalEntry revisedLexicalEntry;
for (int x = 0; x < lexicalEntries.size(); x++) {
revisedLexicalEntry = lexicalEntries.get(x);
revisedLexicalEntry.lexicalCategory = "Something...";
}
}
发生的事情是,稍后,我尝试获取原始JSON(lexicalEntries.get(x).lexicalCategory)的lexicalCategory,它也会更改为“Something ...”而不是其原始值。
如何实现保留原件价值的目标,但复制和修改原件以供进一步使用?我只是希望我的问题足够明确。
提前感谢!
P.S。,我正在使用的实际JSON要复杂得多,但为了更好地理解和更快的建议,我在这里进行了简化。
答案 0 :(得分:0)
如何实现保留原件价值但复制和修改原件以供进一步使用的目标?
使用新值创建一个新的LexicalEntry
对象,而不是像现在一样更改现有对象。