java - Spring Boot:以 Json 格式返回匹配顺序
问题描述
我有这个控制器方法,它在对象的 json 数组中找到匹配的订单并返回true
或false
取决于订单是否存在。请看下面的方法:
@GetMapping(value="/lok/{id}")
@ResponseStatus(HttpStatus.FOUND)
public String getBasicAut(OrdersList ordersList, @PathVariable("id") String id){
List<Order> olst = basicAuth.orderDetails(ordersList).getBody().getOrders();
int orderFound = 0;
for (int i = 0; i < olst.size(); i++){
System.out.println(olst.get(i).getId());
Long order_id = Long.parseLong(id);
if(olst.get(i).getId() == order_id){
orderFound = 1;
break;
} else {
orderFound = 0;
}
}
if(orderFound == 1){
return "Order found!";
} else {
return "Order not found!";
}
}
我搜索的对象列表数组的结构如下:
[
{
"id": 2073128511111,
"email": "email1@gmail.com",
"number": "5543"
},
{
"id": 2073128511112,
"email": "email2@gmail.com",
"number": "5542"
},
{
"id": 2073128511113,
"email": "email@3@gmail.com",
"number": "5541"
}
]
我在这里尝试做的是,一旦我为我的方法提供 2073128511113 的 id - 例如 - 我想在一个对象中获取对象信息,而不是一个字符串,而不是它是否被发现。所需的输出将是 - 对于上面的示例 id:
{
"id": 2073128511113,
"email": "email@3@gmail.com",
"number": "5541"
}
解决方案
只需在您的方法中直接返回一个 Order 对象:
公共秩序 getBasicAut
并返回与您的 ID 匹配的 Order 对象,因此直接使用 int 代替 for 循环
for (Order order : olst){ if(order.getId() == myId){ return order; } }
或更好,如果您使用 Java > 8 使用流过滤您的 ID 并返回您的 Order 对象
推荐阅读
- c# - 在 Winforms 中使用 WPF 自定义控件
- c# - System.IO 异常“该进程无法访问该文件,因为它正被另一个进程使用。”
- reactjs - React setstate 回调在初始使用后不起作用
- node.js - 服务应该抛出异常?(网络 API)
- angular - catchError 上的拦截器中的无限循环
- java - 试图从只有一行的网站获取字符串
- python - 使用 sqlite OperationalError 创建函数:没有这样的列
- tensorflow - 在张量流中使用神经网络进行二进制分类无法学习
- r - Selenium 不再适用于 R
- spring-boot - JPA:多对多问题 - Spring Boot 项目