複雑なパスを使用してJSONからプロパティを取得することは可能ですか?"prop1.prop2"
?私が試したとき ::私が使用したJSONの サンプル:F#JSON解析 - 複雑なパスを使用してプロパティを取得する方法(複数のプロパティ名からなる)
{
"prop1": {
"prop2": "value"
}
}
を私がしたい持っているものは、その値"value"
とそこにプロパティ"prop2"
を取得することです
#r "../packages/FSharp.Data.2.3.0/lib/net40/FSharp.Data.dll"
open FSharp.Data
open FSharp.Data.JsonExtensions
let json = JsonValue.Load "SampleJson.json"
json.GetProperty("prop1.prop2")
を私が得た:
System.Exception: Didn't find property 'prop1.prop2' in {"prop1":{"prop2":"value"}}
私は自分でこのような方法を書こうとしましたが、不器用に見えます:
let rec tryGetChildValue (propNameSplitted : List<string>) (json:JsonValue) =
match propNameSplitted with
| [] -> None
| [x] -> json.TryGetProperty (x)
| x::xs ->
match json.TryGetProperty (x) with
| Some p -> tryGetChildValue xs (json.GetProperty(x))
| None -> None
let tryGetPropValue (propName: string) (json:JsonValue) =
let s = propName.Split '.' |> Array.toList
tryGetChildValue s json
let propName = "prop1.prop2"
let result = (tryGetPropValue propName json)
ありがとうLeleutch。 私はJsonProviderを試しました。しかし、私の問題は、JSONに動的にアクセスする必要があることです。実際にはJSONファイルとJSONトークンへのパスがあります(あらかじめわからない)。だから、残念ながら、私はあなたが示唆するようにコードすることができませんでした。 私が実際に検索した内容はこれと似ていました。http://stackoverflow.com/questions/19645501/searching-for-a-specific-jtoken-by-name-in-a-jobject-hierarchy –