在内部,JsonConvert.SerializeObject(obj, Formatting.Indented)
归结为
JsonSerializer jsonSerializer = JsonSerializer.Create(null);
StringWriter stringWriter = new StringWriter(new StringBuilder(256), (IFormatProvider) CultureInfo.InvariantCulture);
using (JsonTextWriter jsonTextWriter = new JsonTextWriter((TextWriter) stringWriter))
{
jsonTextWriter.Formatting = formatting;
jsonSerializer.Serialize((JsonWriter) jsonTextWriter, value);
}
return stringWriter.ToString();
这很好用。但是,如果我执行以下操作:
string json;
JsonSerializer jsonSerializer = JsonSerializer.Create();
using (var stream = new MemoryStream())
using (var streamWriter = new StreamWriter(stream, Encoding.UTF8))
using (var jsonWriter = new JsonTextWriter(streamWriter))
{
serializer.Serialize(jsonWriter, cmd);
stream.Position = 0;
using (var reader = new StreamReader(stream))
{
json = reader.ReadToEnd();
}
}
那么值json
is ""
。谁能指出我的错误吗?
问题是你没有冲水streamWriter
写完后:
serializer.Serialize(jsonWriter, cmd);
streamWriter.Flush();
stream.Position = 0;
或者,为什么不直接使用StringWriter
首先?
using (var writer = new StringWriter())
{
using (var jsonWriter = new JsonTextWriter(writer))
{
serializer.Serialize(jsonWriter, cmd);
Console.WriteLine(writer.ToString());
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)