Comment convertir un IEnumerable en JSON?

J'ai une méthode qui renvoie un ienumberable contenant 1..n enregistrements. Comment convertir les résultats en une chaîne JSON?

Merci!

26
demandé sur DenaliHardtail 2011-04-29 08:16:00

5 réponses

IEnumerable<int> sequenceOfInts = new int[] { 1, 2, 3 };
IEnumerable<Foo> sequenceOfFoos = new Foo[] { new Foo() { Bar = "A" }, new Foo() { Bar = "B" } };

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string outputOfInts = serializer.Serialize(sequenceOfInts);
string outputOfFoos = serializer.Serialize(sequenceOfFoos);

Qui produit la sortie

[1,2,3]
[{"Bar":"A"},{"Bar":"B"}]

Et puis vous pouvez récupérer votre séquence

IEnumerable<Foo> foos = serializer.Deserialize<IEnumerable<Foo>>(outputOfFoos);
37
répondu Anthony Pegram 2011-04-29 04:27:54

Peut-être que vous pouvez essayer ceci:

var categories = from c in db.tableone
                 select new { key = c.tableoneID, value = c.tableoneName };

JsonResult categoryJson = new JsonResult();
categoryJson.Data = categories;

return categoryJson;
5
répondu Notepad 2016-01-15 19:58:45

Lorsque vous utilisez MVC, vous pouvez utiliser le système ".Web.Helper.Classe Json " . J'avais besoin de quelques éléments rendus avec la page en json:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Categorie { get; set; }
}

Dans la vue:

@{
          var products = new List<Product> { 
                new Product{ Id = 1, Name = "test product", Categorie = 1},
                new Product{ Id = 2, Name = "another product",Categorie = 1},
                new Product{ Id = 3, Name = "more stuff",Categorie = 1},
                new Product{ Id = 4, Name = "even more",Categorie = 2},
                new Product{ Id = 5, Name = "and the last",Categorie = 2}
            };
        }

    //fill the javascript variable with products
    var products= @(Html.Raw(Json.Encode(products) )); 

Notez le code Html.Brut...

Bien que cela puisse être utile, ne l'utilisez pas trop. Le rendu de grandes sections de données dans votre page rend la page volumineuse et peut entraîner des problèmes de performances lorsque le navigateur ne peut pas mettre en cache vos résultats. Si vous avez besoin de plus de données, utilisez un appel REST, afin que le navigateur puisse mettre en cache les résultats.

3
répondu Nicow 2015-08-26 09:24:23

Je voudrais regarder dans un outil tiers pour faire la conversion de vos objets en JSON. En voici un bon: http://json.codeplex.com/

2
répondu Andy White 2011-04-29 04:25:28

Vous pouvez le faire comme ceci en utilisant. NET Framework lui-même et sans utiliser d'outils tiers

using System.Web.Script.Serialization;

public class Json
{
    public string getJson()
    {
       // some code //
       var products = // IEnumerable object //
       string json = new JavaScriptSerializer().Serialize(products);
       // some code //
       return json;
    }
}
2
répondu Harsh Baid 2011-04-29 04:30:03