我正在尝试将FSharp.Data的示例转换为适用于我正在处理的问题的解决方案,但是我并没有取得很大进展。
问题:
给定一个返回类似于JSON的端点:
如何加载数据并仅从实际存在的数据中获取ID?
我不明白如何“模式匹配”以下可能性:
问题:
给定一个返回类似于JSON的端点:
{
Products:[{
Id:43,
Name:"hi"
},
{
Id:45,
Name:"other prod"
}
]
}
如何加载数据并仅从实际存在的数据中获取ID?
我不明白如何“模式匹配”以下可能性:
- 它可能返回空
root.Products
可能不存在/为空Id
可能不存在
通过 Null 匹配尝试
namespace Printio
open System
open FSharp.Data
open FSharp.Data.JsonExtensions
module PrintioApi =
type ApiProducts = JsonProvider<"https://api.print.io/api/v/1/source/widget/products?recipeId=f255af6f-9614-4fe2-aa8b-1b77b936d9d6&countryCode=US">
let getProductIds url =
async {
let! json = ApiProducts.AsyncLoad url
let ids = match json with
| null -> [||]
| _ ->
match json.Products with
| null -> [||]
| _ -> Array.map (fun (x:ApiProducts.Product)-> x.Id) json.Products
return ids
}