Nei*_*rao 6 .net c# json json.net json-deserialization
我正在读NetworkStream的json字符串,然后反序列化使用它Newtonsoft.Json.
有时,json可以在流上同时发送两个对象并同时读取.但是Newtonsoft.Json serializer这只给了我一个对象.
例如,如果我在流上有以下字符串:
{"name":"John Doe","age":10}{"name":"Jane Doe","age":10}
Run Code Online (Sandbox Code Playgroud)
如果我反序列化流,则serializer读取整个流,但只给出第一个对象.
有没有办法让serializer只读取流中的第一个对象,然后在循环的下一次迭代中读取下一个对象?
码:
public static Person Deserialize(Stream stream)
{
var Serializer = new JsonSerializer();
var streamReader = new StreamReader(stream, new UTF8Encoding());
return Serializer.Deserialize<Person>(new JsonTextReader(streamReader));
}
Run Code Online (Sandbox Code Playgroud)
我不能将其作为列表进行反序列化,因为我没有收到json数组.
我认为你可以这样做:
public static IList<Person> Deserialize(Stream stream) {
var serializer = new JsonSerializer();
var streamReader = new StreamReader(stream, new UTF8Encoding());
var result = new List<Person>();
using (var reader = new JsonTextReader(streamReader)) {
reader.CloseInput = false;
// important part
reader.SupportMultipleContent = true;
while (reader.Read()) {
result.Add(serializer.Deserialize<Person>(reader));
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
重要的部分是SupportMultipleContent属性,它通知读者可能有多个 json 对象并排。
| 归档时间: |
|
| 查看次数: |
1551 次 |
| 最近记录: |