如何 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 的字符串表示形式。提供列表而不是字符串。
此问题是
同样,我对 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 的字符串表示形式。提供列表而不是字符串。