2
我想查詢解析Json的結果,如果我找不到我想做其他事情。JsonProvider <...> .Root沒有爲空作爲適當的值
[
{
"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 < ...>根沒有null作爲應有的價值。」這是有道理的,除非我還想在id不在文件中的情況下進行處理。我想我可以改變頭或默認頭和陷阱的例外,但不知道是否有更好的東西。
更新#1: 繼評論的鏈接之一,我能夠與
if obj.ReferenceEquals(res,null)
then NOT_FOUND("")
else OK(res.JsonValue.ToString())
)
更新#2閃避: 雖然提到代碼的作品,但仍然感覺不自然的語言。接受的答案看起來更自然。
看到這個答案:https://stackoverflow.com/a/11696947/679898,這是一個更普遍的問題,但解決方案應該適用。 – scrwtp
可能重複的[類型沒有null作爲適當的值](https://stackoverflow.com/questions/11696484/type-does-not-have-null-as-a-proper-value) – scrwtp
@scrwtp它是不是https://stackoverflow.com/questions/11696484/type-does-not-have-null-as-a-proper-value的副本,除非有方法將屬性AllowNullLiteral應用於OrdersProvider.Root。但是另一個鏈接幫助。我能夠擺脫obj.ReferenceEquals – AlexanderM