Czy to możliwe, aby szeregować opcjonalne wartości w F # przy użyciu FsPickler takie, że:JSON serializacji opcjonalnych wartości z FsPickler
- gdy wartość jest Niektórzy(), wartość zawarta jest w odcinkach
- a kiedy jest Nie, w ogóle nie jest serializowany?
W poniższym przykładzie kodu:
type Person = { name: string; age: int option }
let data = [
{ name = "Helena"; age = Some(24) };
{ name = "Peter"; age = None }
]
let jsonSerializer = FsPickler.CreateJsonSerializer(true, true)
let streamWriter = new StreamWriter(@"C:\output.json")
let out = jsonSerializer.SerializeSequence(streamWriter, data)
plik output.json
zawiera następujące JSON:
[
{
"name": "Helena",
"age": {
"Some": 24
}
},
{
"name": "Peter",
"age": null
}
]
ale chciałbym zawartość pliku JSON wyglądać tak zamiast:
[
{
"name": "Helena",
"age": 24
},
{
"name": "Peter"
}
]
Jestem nami ing FsPickler.Json v3.2.0 i Newtonsoft.Json v9.0.1.
UPDATE (11 stycznia 2017): Użycie skryptu w GIST połączonego przez Stuart poniższa odpowiedź, mam to działa tak:
let obj = { name = "Peter"; age = None }
let stringWriter = new StringWriter()
let jsonSerializer = new JsonSerializer()
jsonSerializer.Converters.Add(new IdiomaticDuConverter())
jsonSerializer.NullValueHandling <- NullValueHandling.Ignore
jsonSerializer.Serialize(stringWriter, obj)
Dzięki za link. Dzięki kodowi w istocie byłem w stanie osiągnąć to, czego szukałem. Zaktualizuję pytanie za pomocą kodu, którego użyłem. –