如何 return java 中多个 JSON 项的列表,第 2 部分

How to return a list of multiple JSON items in java, part 2

此问题是 的后续问题。

同样,我对 Java 和 JSON 完全陌生,所以我知道的不多。我能够进一步处理上述问题的答案,但现在我遇到了更多问题,即(基本上)如何 return 多个 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));
    }

但我不知道如何 return 上面代码中的列表,在我试图获得结果的那一行:

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 return 多个 JSON 的列表(如下所示)而不是字符串?

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

}

编辑:LookupResponseResultList class 如下:

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

问题在-

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

此 LookupResponseResultList class 必须接受 LDAPModel 对象列表。

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

    private String error.
}

修改您的构建器,而不是使用 ldapModel.toString() 设置字符串,而是提供列表本身。

目前,您的 LookupResponseResultList class 具有 List 的字符串表示形式。提供列表而不是字符串。