【发布时间】:2020-10-31 23:57:17
【问题描述】:
我有一个这样的 JSON 文档:
{
cards: [{name: "Foo"}, {name: "Bar"}]
}
如何让moshi只解析属性卡下的数组。
【问题讨论】:
-
您可以在 POJO 中将除卡片以外的所有其他属性标记为瞬态
我有一个这样的 JSON 文档:
{
cards: [{name: "Foo"}, {name: "Bar"}]
}
如何让moshi只解析属性卡下的数组。
【问题讨论】:
首先,Jason 有一个错误。
卡片=>“卡片”.....
String jsonResponseBody = "{\n" +
" \"cards\": [\n" +
" {\n" +
" \"name\": \"Foo\"\n" +
" },\n" +
" {\n" +
" \"name1\": \"Bar\"\n" +
" }\n" +
" ]\n" +
"}";
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<BlackjackHand> jsonAdapter = moshi.adapter(BlackjackHand.class);
try {
BlackjackHand blackjackHand = jsonAdapter.fromJson(jsonResponseBody);
System.out.println(blackjackHand);
Log.e("TAG", "onCreate: "+blackjackHand.cards.get(0).name +"");
Log.e("TAG", "onCreate: "+blackjackHand.cards.get(0).name1 +"");
} catch (IOException e) {
e.printStackTrace();
}
类 BlackjackHand :
public class BlackjackHand {
public final List<Card> cards;
public BlackjackHand(List<Card> cards) {
this.cards = cards;
}
}
类卡:
public class Card {
public final String name;
public final String name1;
public Card(String name, String name1) {
this.name = name;
this.name1 = name1;
}
}
【讨论】:
我们使用 json 列表名称创建一个数据类,并使用 @Json 指定它,它将是一个列表,我们已将数据作为列表接收。
data class Model(@Json(name = "name") val name: String)
data class ModelList(@Json(name = "cards") val cards: List<Model>)
【讨论】: