c# json.net

c# - Line delimitado json serialización y deserialización



json.net (1)

Puede hacerlo analizando manualmente su JSON utilizando JsonTextReader y estableciendo el indicador SupportMultipleContent en true .

Si miramos su primer ejemplo y creamos un POCO llamado Foo :

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

Así es como lo analizamos:

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

Estoy usando JSON.NET y C # 5. Necesito serializar / deserializar la lista de objetos en json delimitado por líneas. http://en.wikipedia.org/wiki/Line_Delimited_JSON . Ejemplo,

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

y

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

Por qué lo necesitaba porque su requisito de Google BigQuery https://cloud.google.com/bigquery/preparing-data-for-bigquery

Actualización: Una forma que encontré es serializar cada objeto de forma seperataly y unirse al final con new-line.