繁体   English   中英

如何在其中使用@处理JSON-LD

[英]How to handle JSON-LD with @ in it

我有以下JSON-LD文档,在https://json-ld.org/playground/中完全有效:

https://gist.github.com/viggis75/27129127a1d3bd84b04f8af4f8e83ff4

我正在尝试使用JsonPath从本文档中获取节点,但是当我想使用谓词创建一个过滤器时会很费力。

链接到上面的JSON-LD文档有两个订单,但是理想情况下,例如,我想获取所有订单,其中orderDelivery.provider.employee [@id]是我提供的给定ID,作为输入。

或者,我想获取orderDelivery [@type]为“ ParcelDelivery”或我提供作为过滤器输入的其他内容的所有订单。

到目前为止,我编写的代码如下:JsonArray getOrdersByFoo(String orderDeliveryType)抛出NoOrdersForDriverFoundException {InputStreamordersAsStream = null; //这是我将JSON-LD文档读入的地方

    Filter ordersByOrderDeliveryTypeFilter = Filter.filter(Criteria.where("orderDelivery[@type]").eq(orderDeliveryType));
    List<Map<String, Object>> orders = JsonPath.parse(ordersAsStream).read("$[*][?]", ordersByOrderDeliveryTypeFilter);
    if(orders == null || orders.isEmpty()) {
        throw new NoOrdersForDriverFoundException();
    }
    JsonReader jsonReader = Json.createReader(ordersAsStream);   
    JsonArray ordersAsJsonArray = jsonReader.readArray();        

    return ordersAsJsonArray;        
}
Filter ordersByOrderDeliveryTypeFilter = Filter.filter(Criteria.where("orderDelivery['@type']").eq(orderDeliveryType));
List<Map<String, Object>> orders = JsonPath.parse(ordersAsStream).read("$[*][?]", ordersByOrderDeliveryTypeFilter);
if(orders == null || orders.isEmpty()) {
    throw new NoOrdersForDriverFoundException();
}
JsonReader jsonReader = Json.createReader(ordersAsStream);   
JsonArray ordersAsJsonArray = jsonReader.readArray();        

return ordersAsJsonArray;        

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM