Как создать java json dto для массива или списков (не имя элемента)? - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь прочитать с входа контроллера json

Когда я использую имя в узле, все окей

Там есть json

{
    "itemList": [
        {
            "name": "Alex",
            "surname": "Ivanov",
            "age": "25"
        },
        {
            "name": "Daria",
            "surname": "Ivanova",
            "age": "23"
        }
    ]
}

itemList в root из json

И я могу поймать его по этим классам

контроллер

@RequestMapping(value = "/users",
        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
        produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class UserController {
    @Post
    public ResponseEntity add(@RequestBody UserDto user) {
    //todo check breack point hear
        return new ResponseEntity<UserDto>(user, null, HttpStatus.OK);
    }
}

и модель

@RequiredArgsConstructor
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class UserDto implements Serializable {
    public List<UserItem> itemList;
}


@RequiredArgsConstructor
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class UserItem implements Serializable {
    private String name;
    private String surname;
    private String age;
}

Но мне нужно по-настоящему, мне нужно разобрать json вот так:

Только элементы в объектах без имени

{
    [
        {
            "name": "Alex",
            "surname": "Ivanov",
            "age": "25"
        },
        {
            "name": "Daria",
            "surname": "Ivanova",
            "age": "23"
        }
    ]
}

Как это сделать?

1 Ответ

1 голос
/ 19 апреля 2020

Это неправильный JSON объект. Внутри массива нет ключа.

{
    [
        {
            "name": "Alex",
            "surname": "Ivanov",
            "age": "25"
        },
        {
            "name": "Daria",
            "surname": "Ivanova",
            "age": "23"
        }
    ]
}

Я думаю, что вы ищете массив JSON:

    [
        {
            "name": "Alex",
            "surname": "Ivanov",
            "age": "25"
        },
        {
            "name": "Daria",
            "surname": "Ivanova",
            "age": "23"
        }
    ]

Для анализа этого массива JSON просто измените ваш контроллер так, чтобы он принимал список UserItem:

@RequestBody List<UserItem> users
...