JSON TypeProvider 和数组中的空值

JSON TypeProvider and null values in arrays

这个代码

open FSharp.Data

[<Literal>]
let sample = """
    { "foo": [
        10,
        null
       ]
    }
"""
type InputTypes = JsonProvider<sample>

InputTypes.Parse(sample).Foo |> Dump

导致 Foo 类型为 int[] 并且包含单个值 10。我期望 Foo 类型为 Nullable<int> []int option []长度为 2.

我查看了文档和 SO 但可以找到关于它的任何信息。

有没有办法告诉 JsonProvider 不要忽略空值,或者它是内置的?

我认为没有办法告诉 JSON 提供者不要这样做,但我同意它有时会有用(如果您想尝试为项目做出贡献!)

同时,如果你想遍历数组中的所有值,包括空值,你可以直接使用low-level底层JsonValue。它不太优雅,但可以让你做你需要的 JSON 处理的这一部分:

[<Literal>]
let sample = """{ "foo": [ 10, null ] }"""
type InputTypes = JsonProvider<sample>

InputTypes.Parse(sample).JsonValue.["foo"].AsArray()
|> Array.map (function 
    | JsonValue.Number n -> Some n 
    | _ -> None)