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)
这个代码
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)