Json.Net ne parvient pas à sérialiser en un flux, mais fonctionne très bien en sérialisant à une chaîne
En interne, JsonConvert.SerializeObject(obj, Formatting.Indented)
se résume à
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();
Cela fonctionne bien. Cependant, si je ne les suivants:
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();
}
}
Alors la valeur de json
est ""
. Quelqu'un peut-il m'indiquer mon erreur?
source d'informationauteur moswald
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous n'avez pas vidé la
streamWriter
après avoir écrit:Sinon, pourquoi ne pas simplement utiliser un
StringWriter
pour commencer?Je suppose que soit
JsonTextWriter
ouStreamWriter
faire quelques tampons internes. Donc, essayez de vider lejsonWriter
et/ou lastreamWriter
avant la lecture de la mémoire sous-jacente de flux.