Как вернуть список из нескольких JSON элементов в java, часть 2 - PullRequest
1 голос
/ 06 августа 2020

Этот вопрос является продолжением этого вопроса .

Опять же, я совершенно новичок в Java и JSON, поэтому я вообще мало что знаю. Я смог немного продолжить с ответами на упомянутый выше вопрос, но теперь я столкнулся с большим количеством проблем, а именно (в основном) с синтаксисом того, как вернуть список из нескольких JSON. (Я получил эти коды от SpringBoot, и я действительно не знаю, как все это работает; я все еще изучаю Java.)

В настоящее время я пробовал вот что:

@GetMapping("reports/{userID}")
public ResponseEntity<LookupResponseList> getDirectReports(@PathVariable String userID) {
    Optional<List<LDAPModel>> ldapModel = ldapService.getDirectReports(userID);
        if (!ldapModel.isPresent()) {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
        LookupResponseResultList result = ldapMapper.toLookupResponseResultList(ldapModel.get());
        return ResponseEntity.ok(LookupResponseList.result(result, LookupResponseList.class));
    }

Но я не знаю, как вернуть список в приведенном выше коде, в строке, где я пытаюсь получить результат:

LookupResponseResultList result = ldapMapper.toLookupResponseResultList(ldapModel.get());

Код для ldapMapper.toLookupResponseResultList приведен ниже:

   public LookupResponseResultList toLookupResponseResultList(List<LDAPModel> ldapModel) {
        return LookupResponseResultList.builder()
                .userId(ldapModel.toString())
//                .userId(ldapModel.getUserId())
//                .telephoneNumber(ldapModel.getTelephoneNumber())
                .build();
    }

Мне нужна строка с двумя комментариями. Я могу видеть всю структуру JSON в строке над строкой с комментариями, а именно:

{
    "result": {
    "userId": "[LDAPModel(userId=abcde123,telephoneNumber=1-555-5555555), LDAPModel(userId=fghi456,telephoneNumber=1-333-3333333)]",
    },
    "error": null
}

Как сделать так, чтобы toLookupResponseResultList возвращал список из нескольких JSON (как показано ниже) вместо строки?

{
"result": [
    {
      "userId": "abcde123",
      "telephoneNumber": "1-555-5555555"
    },
    {
      "userId": "fghi456",
      "telephoneNumber": "1-333-3333333"
    }
    ],
"error": null

} ​​

Изменить: LookupResponseResultList класс ниже:

public class LookupResponseList extends BaseBodyResponse<LookupResponseList.LookupResponseResultList> {
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class LookupResponseResultList {
    String userId;
    String telephoneNumber;
}

1 Ответ

3 голосов
/ 06 августа 2020

Проблема в -

   public LookupResponseResultList toLookupResponseResultList(List<LDAPModel> ldapModel) {
    return LookupResponseResultList.builder()
            .userId(ldapModel.toString()) // THIS LINE
            .build();
}

Этот класс LookupResponseResultList должен принимать список объектов LDAPModel.

class LookupResponseResultList {
    @JsonProperty
    private List<LDAPModel> result;

    private String error.
}

Измените свой построитель и вместо установки строки с помощью ldapModel.toString (), укажите сам список.

В настоящее время ваш класс LookupResponseResultList имеет строковое представление List. Укажите список вместо строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...