我正在尝试查询解析后的Json结果,如果找不到,我想做其他事情。
[
{
"orderId": 136,
"quantity": 5,
"price": 3.75
},
{
"orderId": 129,
"quantity": 9,
"price": 3.55
},
{
"orderId": 113,
"quantity": 11,
"price": 3.75
}
]
我的代码如下:
type OrdersProvider = JsonProvider<"Orders.json">
let orders = OrdersProvider.GetSamples()
let test id =
let res = query{
for i in orders do
where (i.OrderId = id)
select i
headOrDefault
}
if isNull(res)
then NOT_FOUND("")
else OK(res.JsonValue.ToString())
)
然而,我遇到了编译错误:“JsonProvider <...>.Root没有null作为适当的值”。这有点说得通,但我仍然想捕获文件中不存在id的情况。我猜我可以将headOrDefault更改为head并捕捉异常,但我想知道是否有更好的方法。
更新#1: 根据评论中的链接之一,我能够摆脱
if obj.ReferenceEquals(res,null)
then NOT_FOUND("")
else OK(res.JsonValue.ToString())
)
更新 #2: 虽然上述代码可行,但语言仍感不自然。接受的答案看起来更加自然。