2017-09-05 4 views
0

Je crée un XmlDoc en C# et utilise Newtonsoft pour sérialiser en JSON. Cela fonctionne, mais je reçois un tas de ce qui semble être "NUL" à la fin du JSON. Aucune idée pourquoi. Quelqu'un a déjà vu ça?newtonsoft SerializeXmlNode trailing NULL

CODE:

XmlDocument xmlDoc = BuildTranslationXML(allTrans, applicationName, language); 

// Convert the xml doc to json 
// the conversion inserts \" instead of using a single quote, so we need to replace it 
string charToReplace = "\""; 
string jsonText = JsonConvert.SerializeXmlNode(xmlDoc); 

// json to a stream 
MemoryStream memoryStream = new MemoryStream(); 
TextWriter tw = new StreamWriter(memoryStream); 
tw.Write(jsonText); 
tw.Flush(); 
tw.Close(); 

// output the stream as a file 
string fileName = string.Format("{0}_{1}.json", applicationName, language); 
return File(memoryStream.GetBuffer(), "text/json", fileName); 

Le fichier est servi à la page Web d'appel et le navigateur invite l'utilisateur à enregistrer le fichier. Lors de l'ouverture du fichier, il affiche le JSON correct mais possède également tous les nulls de fin. Voir l'image ci-dessous (espérons-le liende stackoverflow):

file screenshot

Répondre

2

La méthode GetBuffer() renvoie la représentation interne du MemoryStream. Utilisez ToArray() à la place pour obtenir la partie de ce tableau interne qui contient les données Newtonsoft.

+0

Génial! Merci beaucoup, ça a marché. –

+0

@ToddWilloughby - dans ce cas, vous pouvez [accepter cette réponse] (https://meta.stackexchange.com/q/5234). – dbc