2015-04-19 26 views
6

JSON.NET ve C# 5 kullanıyorum. Nesnelerin listesini sınırlandırılmış json'a serileştirmem gerekiyor. http://en.wikipedia.org/wiki/Line_Delimited_JSON. Örnek,Sınırlandırılmış Json serileştirme ve serileştirme

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

ve

{"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}]} 

ihtiyacım Neden onun Google BigQuery gereksinimi nedeniyle https://cloud.google.com/bigquery/preparing-data-for-bigquery

Güncelleme: buldum bir yolu, her seperataly nesne ve sonu ile katılmak seri olduğu Yeni hat.

cevap

12

JSON'unuzu JsonTextReader kullanarak ve SupportMultipleContent bayrağını true olarak ayarlayarak elle yapabilirsiniz. Biz bunu ayrıştırmak nasıl

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

: biz ilk örneği inceleyelim ve POCO Foo denilen oluşturursanız

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); 
}