Es ist meine erste Frage auf SO ... so urteilen nicht streng =)F # Daten: JSON-Parser. Mit JsonExtensions
Normalerweise werden alle meine Fragen techout in chat rooms (glauben Sie mir, viele von ihnen =)).
Kürzlich sprechen wir über die RosettaCode. Und ich wunderte mich, einige der Aufgaben Code zu ergänzen F #
Einer von ihnen ist JSON.
Eine der möglichen Lösungen ist die Verwendung von "F # Data: JSON Parser". Also meine Frage ist damit verbunden.
Dieser Code funktioniert gut:
open FSharp.Data
open FSharp.Data.JsonExtensions
type Person = {ID: int; Name:string}
let json = """[ { "ID": 1, "Name": "First" }, { "ID": 2, "Name": "Second" }]"""
json |> printfn "%s"
match JsonValue.Parse(json) with
| JsonValue.Array(x) ->
x |> Array.map(fun x -> {ID = System.Int32.Parse((x?ID).ToString()); Name = (string x?Name)})
| _ -> failwith "fail json"
|> Array.iter(fun x -> printfn "%i %s" x.ID x.Name)
Druck:
[ { "ID": 1, "Name": "First" }, { "ID": 2, "Name": "Second" }]
1 "First"
2 "Second"
Aber es
{ID = System.Int32.Parse((x?ID).ToString()); Name = (string x?Name)}
sieht nicht gut aus.
This Ich las über JsonExtensions,
aber wenn ich
verwenden{ID = (x?ID.AsInteger()) ; Name = (x?Name.AsString()) }
ich Fehler kompilieren erhalten:
Das Feld, Konstruktor oder "AsInteger" ist nicht definiert
Das Feld, Konstruktor oder "AsString" ist n ot definiert
Merkwürdig ist, dass ich Zugänglichkeit durch "offene FSharp.Data.JsonExtensions" sehen
So Frage: Wie JsonExtensions benutzen?
Ja, Fehler sind die gleichen –
http://i.stack.imgur.com/l9Rz5.png –
Das ist sehr verwirrend. Welche Version von F # + VS verwendest du? –