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!
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);
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;
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.
Je voudrais regarder dans un outil tiers pour faire la conversion de vos objets en JSON. En voici un bon: http://json.codeplex.com/
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;
}
}