首页 > 解决方案 > Spring Boot:以 Json 格式返回匹配顺序

问题描述

我有这个控制器方法,它在对象的 json 数组中找到匹配的订单并返回truefalse取决于订单是否存在。请看下面的方法:

@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"
  }

标签: javaspringspring-boot

解决方案


只需在您的方法中直接返回一个 Order 对象:

公共秩序 getBasicAut

并返回与您的 ID 匹配的 Order 对象,因此直接使用 int 代替 for 循环

for (Order order : olst){ if(order.getId() == myId){ return order; } }

或更好,如果您使用 Java > 8 使用流过滤您的 ID 并返回您的 Order 对象


推荐阅读