2017-02-15 1 views
1

J'ai récemment réalisé que les tableaux sérialisation à la fois Json.NET et bibliothèques Jil, les résultats d'un mauvais objet JSON! au moins aussi loin que https://jsonlint.com dit. Par exempletableaux Sérialisation mauvais résultat JSON

var serializer = // Json.NET_Serializer or Jil_Serializer; 
var json = serializer.Serialize(new[] {1,2,3,4,5}); 
Console.WriteLine(json); 

résultats { [1, 2, 3, 4, 5] } qui, comme https://jsonlint.com (et https://jsonformatter.curiousconcept.com/) dit, ne va pas

// Le message d'erreur dans jsonformatter:

chaîne ou} Attendons, non [.

et le résultat attendu que je pense est:

[1, 2, 3, 4, 5] 

Y at-il point caché que je manqué? Par exemple, y a-t-il un réglage spécial dans Json.NET ou Jil pour résoudre ce problème?

MISE À JOUR: Notez que la question n'est pas de savoir comment obtenir le résultat mentionné. Mais est sur la façon d'obtenir JSON.NET ou JIL pour bien fonctionner. Merci d'avance.

+0

Comment Imprimez-vous votre JSON? –

+0

@RobbyCornelissen écrire dans la console, ou définir le point d'arrêt, ou enregistrer dans la base de données ... –

+0

Avez-vous essayé d'ajouter votre objet tableau dans une variable 1er? –

Répondre

0

Vous pouvez essayer d'utiliser JavScriptSerializer, comme si -

new JavaScriptSerializer().Serialize(new[] {1,2,3,4,5}); 

qui produit le résultat attendu pour moi.

0

L'utilisation JArray.FromObject() fonctionne très bien pour moi:

Console.WriteLine(JArray.FromObject(new[] {1,2,3,4,5})); 
1

Aucune idée de ce que vous faites mal, mais avec le code suivant à l'aide JSON.Net:

using System; 
using System.IO; 
using Newtonsoft.Json; 

public class Program 
{ 
    public static void Main() 
    { 
     var json = JsonConvert.SerializeObject(new[] {1,2,3,4,5}); 

     Console.WriteLine(json); 

     JsonSerializer serializer = new JsonSerializer(); 

     using (StringWriter sw = new StringWriter()) 
     using (JsonWriter writer = new JsonTextWriter(sw)) 
     { 
      serializer.Serialize(writer, new[] {1,2,3,4,5}); 

      Console.WriteLine(sw); 
     } 
    } 
} 

-je obtenir la sortie correcte avec à la fois JsonConvert.SerializeObject() et JsonSerializer.Serialize() (violon here):

[1,2,3,4,5] 
[1,2,3,4,5]