【问题标题】:Moshi converter arrayMoshi 转换器阵列
【发布时间】:2020-10-31 23:57:17
【问题描述】:

我有一个这样的 JSON 文档:

{ 
  cards: [{name: "Foo"}, {name: "Bar"}]
}

如何让moshi只解析属性卡下的数组。

【问题讨论】:

  • 您可以在 POJO 中将除卡片以外的所有其他属性标记为瞬态

标签: android arrays json moshi


【解决方案1】:

首先,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;
    }
}

【讨论】:

    【解决方案2】:

    我们使用 json 列表名称创建一个数据类,并使用 @Json 指定它,它将是一个列表,我们已将数据作为列表接收。

    data class Model(@Json(name = "name") val name: String)
    
    data class ModelList(@Json(name = "cards") val cards: List<Model>)
    

    【讨论】:

    • 请解释为什么它可以使其更有效
    • 我们用 json 列表名称创建一个数据类,并用@Json 指定它,它将是一个列表,我们接收到的数据是一个列表。
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 2021-09-19
    • 2016-01-26
    • 2017-01-25
    • 2021-05-13
    • 2016-09-16
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多