Une idée sur la façon de le faire? Si ce n'est pas possible, qu'est-ce qu'une bonne bibliothèque JSON pour C#?L'utilisation de System.Json pour des projets autres que Silverlight?
Répondre
Json.NET est une excellente bibliothèque .NET json. Supporte LINQ, lire/écrire et convertir des objets depuis et vers json.
Si vous êtes à la recherche d'JSON encodage/décodage, il y a une bibliothèque d'extension System.Web officielle de Microsoft qui le fait, les chances sont que vous avez probablement déjà cette assemblée (System.Web.Extensions):
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
exemple:
using System;
using System.Web.Script.Serialization;
class App
{
static void Main(string[] args = null)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
String sJson = "{\"Name\": \"Your name\"}";
DesJson json = jss.Deserialize<DesJson>(sJson);
Console.WriteLine(json.Name);
}
}
class DesJson {
public string Name {get; set;}
}
est ici une méthode extenstion pour sérialiser une instance d'objet JSON:
public static class GenericExtensions
{
public static string ToJsonString<T>(this T input)
{
string json;
DataContractJsonSerializer ser = new DataContractJsonSerializer(input.GetType());
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, input);
json = Encoding.Default.GetString(ms.ToArray());
}
return json;
}
}
Vous devez ajouter une référence à System.ServiceModel.Web pour utiliser DataContractSerializer.
System.Json
est maintenant disponible dans des projets non Silverlight via NuGet (système de gestion des paquets de .Net) et va, espérons-être publié dans le cadre du cadre de base en vnext. Le package NuGet est nommé JsonValue.
Imaginez que nous avons la JSON suivante dans la variable chaîne json
:
[{"a":"foo","b":"bar"},{"a":"another foo","b":"another bar"}]
Nous pouvons écrire la valeur "une autre barre" à la console en utilisant le code suivant:
using System.Json;
dynamic jsonObj = JsonValue.Parse(json);
var node = jsonObj[1].b;
System.Console.WriteLine(node.Value);
Le package 'System.Json' a été interrompu. Vous pouvez trouver les classes appropriées dans le cadre lui-même. –
Le propriétaire a désélectionné ce paquet :( – Tito
@PatrickHofman: Quelle version voulez-vous dire? La dernière version presque stable était https://www.nuget.org/packages/System.Json mais maintenant ils l'ont aussi désapprouvé – Sebastian
Une autre l'option est d'utiliser l'implémentation de System.Json de Mono, J'ai été en mesure de le rétroporter en C# 2.0 avec quelques changements mineurs.
https://github.com/mono/mono/tree/master/mcs/class/System.Json/System.Json
- 1. Fichiers de ressources pour les langues autres que ISO 8859
- 2. De quelle manière utilisez-vous des délégués et/ou des événements autres que pour l'interface utilisateur?
- 3. Autres moyens de désactiver Silverlight dans IE 7?
- 4. Statistiques du référentiel Subversion, autres que StatSVN?
- 5. Existe-t-il des projets WPF courants?
- 6. Masquer Autres divs autres que celui que je clique dessus ... En JQuery
- 7. Est-ce que Silverlight peut initier des actualisations de page?
- 8. Meilleures pratiques pour les classes de service de domaine dans les projets RIA Silverlight
- 9. IronPython vs C# pour des projets de petite taille
- 10. Standard OOP Techniques pour la liste des projets PHP style
- 11. Comment configurer Dotproject pour les projets de développement de logiciels?
- 12. Comment convertir un dictionnaire <string, string> en une chaîne json en utilisant System.Json?
- 13. Je cherche des exemples de projets BlackBerry
- 14. Projets pour C++ Débutant/Intermédiaire?
- 15. Comment distribuer et administrer des projets opensource?
- 16. Est-ce que quelqu'un d'autre a le sentiment que les solutions pour des projets simples sont souvent sur-élaborées?
- 17. Autres problèmes de Mod_rewrite
- 18. Les classes de Java qui implémentent runnable peuvent-elles avoir des méthodes autres que run()?
- 19. Comment faire une requête SQL « vous êtes mieux que XX pour cent des autres utilisateurs » pour MSSQL2000
- 20. Vitesse pour les petits projets
- 21. Modèle de conception pour les composants qui dépendent les uns des autres
- 22. De petits à grands projets
- 23. C++: valeurs par défaut pour les arguments de modèle autres que les derniers?
- 24. Partage des préférences d'application entre plusieurs projets
- 25. Emplacement de l'historique des projets Visual Studio?
- 26. API/Framework pour générer des solutions/projets Visual Studio
- 27. requête SQL pour extraire des projets utilisateur a accès à
- 28. Flex: réutiliser des classes pour plusieurs projets sans copier-coller?
- 29. Comparer des fichiers les uns aux autres
- 30. Aide Scons pour les autres outils de construction
Je l'ai regardé. Cela semble trop pour Enterprise par rapport à System.Json. Je cherche principalement à utiliser Json pour sérialiser et désérialiser des listes de structures de données implicites (tuples, etc.). Je travaille déjà principalement sur des données dynamiques, donc sa capacité à sérialiser des objets fortement typés n'est pas exactement quelque chose dont je suis ravi, et son autre méthode est trop verbeuse. – Patrick
Il fait des données dynamiques comme System.Json ainsi que la sérialisation/désérialisation: JObject o = JObject.Parse ("{'first_name': 'Jeff', 'age': 30}"); Console.WriteLine (o ["prénom"]); –
C'est mieux. J'ai vraiment aimé les opérateurs implicites sur la classe JsonValue. Je peux juste essayer. – Patrick