Массив преобразователей Moshi - PullRequest
0 голосов
/ 11 июля 2020

У меня есть JSON документ вроде этого:

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

Как сделать так, чтобы моши анализировал массив только под карточками атрибутов.

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Мы создаем класс данных с именем списка json и указываем его с помощью @ Json, это будет список, и мы получили данные в виде списка.

data class Model(@Json(name = "name") val name: String)

data class ModelList(@Json(name = "cards") val cards: List<Model>)
0 голосов
/ 11 июля 2020

Во-первых, у вас ошибка в Джейсоне.

card => "card" .....

      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();
    }

class 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;
    }
}
...