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.