Как анализировать массив JSON (строка) с помощью Gson

avatar
HoyhandKlay
8 августа 2021 в 19:47
125
0
0

Я хочу преобразовать строковые массивы JSON в VO и использовать gson.

PostMan RequestBody Вызвать мой TestApi:

{"data": "[{\"id\":\"1\",\"name\":\"james\",\"passwd\":\"abcd\"},{\"id\":\"2\",\"name\":\"john\",\"passwd\":\"dcba\"},{\"id\":\"3\",\"name\":\"mike\",\"passwd\":\"opppt\"}]"}

Мой класс озвучивания:

@Data
public class TestVo {
    private String id;
    private String name;
    private String passwd;
}

Я попробовал этот код:

@PostMapping(value = "/testApi")
public void testApi(@RequestBody String data){

    Gson gson = new Gson();

    JsonElement jsonElement = gson.fromJson(data, JsonElement.class);

    String jsonStr = jsonElement.getAsJsonObject().get("data").getAsString();

    List<TestVo> list = gson.fromJson(jsonStr, new TypeToken<List<TestVo>>(){}.getType());
.
.
.

Вывод

Ожидается строка, но BEGIN_ARRAY в столбце строки 1..... Ошибка T.T

Источник
HoyhandKlay
8 августа 2021 в 20:30
0

код ошибки: { List<TestVo> list = gson.fromJson(jsonStr, new TypeToken<List<TestVo>>()(){}.getType()); } здесь. get.("data") и getAsString не вызывают ошибки

YHStan
8 августа 2021 в 20:38
0

coderhelper.com/a/5554296/12181863 если вы посмотрите на это, внутренний список в методе .fromJson() использует ArrayList. Можете ли вы попробовать это и посмотреть, поможет ли это?

terrorrussia-keeps-killing
9 августа 2021 в 06:34
0

Ваши сопоставления не соответствуют ожидаемому вводу, следовательно, неверны. Вы заметили поле data? Кроме того, зачем вам нужно принимать его как строку и выполнять ручную десериализацию, если Spring MVC может сделать все это за вас прямо из коробки?

Ответы (0)