如何使用@处理JSON-LD

时间:2018-05-13 07:49:02

标签: java jsonpath

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

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

我试图使用JsonPath从这个文档中获取节点,但是当我想要制作一个带有@的字段匹配的Predicates的过滤器时,我就会陷入困境。

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

或者,我想得到所有订单,其中orderDelivery [@type]是" ParcelDelivery"或者我提供的其他东西作为过滤器的输入。

到目前为止,我写的代码如下所示:     JsonArray getOrdersByFoo(String orderDeliveryType)抛出NoOrdersForDriverFoundException {         InputStream ordersAsStream = 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;        
}

0 个答案:

没有答案