2015-04-19 9 views
6

Ich verwende JSON.NET und C# 5. Ich muss Liste von Objekten in Zeile begrenzten json serialisieren/deserialisieren. http://en.wikipedia.org/wiki/Line_Delimited_JSON. BeispielZeile abgegrenzt JSON Serialisierung und Deserialisierung

{"some":"thing1"} 
{"some":"thing2"} 
{"some":"thing3"} 

und

{"kind": "person", "fullName": "John Doe", "age": 22, "gender": "Male", "citiesLived": [{ "place": "Seattle", "numberOfYears": 5}, {"place": "Stockholm", "numberOfYears": 6}]} 
{"kind": "person", "fullName": "Jane Austen", "age": 24, "gender": "Female", "citiesLived": [{"place": "Los Angeles", "numberOfYears": 2}, {"place": "Tokyo", "numberOfYears": 2}]} 

Warum brauchte ich, weil seine Google BigQuery Anforderung https://cloud.google.com/bigquery/preparing-data-for-bigquery

Update: Ein Weg, fand ich, dass jeder seperataly und kommen am Ende serialisiert Objekt mit Neue Zeile.

Antwort

12

Sie können dies tun, indem Sie Ihren JSON manuell mit JsonTextReader analysieren und das Flag SupportMultipleContent auf true setzen.

Wenn wir beim ersten Beispiel aussehen, und erstellen Sie ein POCO Foo genannt:

public class Foo 
{ 
    [JsonProperty("some")] 
    public string Some { get; set; } 
} 

Dies ist, wie wir es analysieren:

var json = "{\"some\":\"thing1\"}\r\n{\"some\":\"thing2\"}\r\n{\"some\":\"thing3\"}"; 
var jsonReader = new JsonTextReader(new StringReader(json)) 
{ 
    SupportMultipleContent = true // This is important! 
}; 

var jsonSerializer = new JsonSerializer(); 
while (jsonReader.Read()) 
{ 
    Foo foo = jsonSerializer.Deserialize<Foo>(jsonReader); 
} 
Verwandte Themen