I want to parse string JSON arrays to VO and using gson.
PostMan RequestBody Call my TestApi:
{"data": "[{\"id\":\"1\",\"name\":\"james\",\"passwd\":\"abcd\"},{\"id\":\"2\",\"name\":\"john\",\"passwd\":\"dcba\"},{\"id\":\"3\",\"name\":\"mike\",\"passwd\":\"opppt\"}]"}
My VO Class :
@Data
public class TestVo {
private String id;
private String name;
private String passwd;
}
I tried this Code :
@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());
.
.
.
Output
Expected a string but was BEGIN_ARRAY at line 1 column ..... Error T.T
>(){}.getType()); } here. get.("data") and getAsString dont cause error