2012-10-31 2 views
0

J'essaie de trouver un moyen de sérialiser et de désérialiser un ensemble de données avec une datable à JSON et de JSON à un ensemble de données/datatable à l'aide de JSON.NET, mais tous Les exemples et les exemples que j'ai trouvés ne sont que des sérialisations à partir d'un ensemble de données ou peuvent être transmis à JSON et jamais à deux voies. Nous avons un système qui traite les ensembles de données et les données databélisés XML que nous devons toujours conserver dans ce format, mais qui permettent à certaines vues de l'interface utilisateur de rendre les données au format JSON.Comment effectuer la sérialisation et la désérialisation des données vers et à partir de JSON

Les données peuvent avoir des valeurs nulles et c'est valide.

Toute aide serait grandement appréciée.

Exemple (une sérialisation simple):
http://www.west-wind.com/weblog/posts/2008/Sep/03/DataTable-JSON-Serialization-in-JSONNET-and-JavaScriptSerializer

+1

[Ce poste] (http://stackoverflow.com/a/12208273/102937) dit que la dernière bibliothèque JSON.NET a la capacité dont vous avez besoin. –

+0

Merci beaucoup, je ne savais pas que les nouvelles versions de JSON.NET vont permettre la conversion DataTable. J'ai juste besoin de créer une version personnalisée de Newtonsoft.Json.Converters.DataTableConverter qui permet des types complexes particuliers en tant que types de données de colonne. – jon333

+0

duplication possible de [Comment sérialiser/désérialiser au format JSON et XML en Java?] (Http://stackoverflow.com/questions/5201593/how-to-serialize-deserialize-in-both-json-and-xml -format-en-java) –

Répondre

2

Le lien suivant est à la source pour Newtonsoft.Json. Converters.DataTableConverter.cs qui fait ce que vous voulez, c'est assez simple et semble être le meilleur itinéraire.

https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Converters/DataTableConverter.cs

+0

lien mort, quelqu'un peut-il réviser thx –

+1

@Chris J'ai mis à jour le lien. Toute la source Newtonsoft.Json est sur Github si vous voulez vraiment regarder sous le capot. – evanmcdonnal

2

Tout dépend comment vous voulez gérer la désérialisation. Personnellement, j'aime aller avec l'approche fondée sur LINQ qui fonctionne de la manière suivante:

// Get the children of the JSON result (This example is from my own code, 
// in which case I have one big "result" node which contains a bunch of 
// children that I am interested in deserializing. 
var jsonChildren = JObject.Parse(response)["results"].Children(); 

// Now use a LINQ statement to deserialize. For example... 
var jsonResults = jsonChildren.Select(x => 
{ 
    new MyObject 
    { 
     Prop1 = x["Var1"], 
     Prop2 = x["Var2"], 
    } 
}); 

Qu'est-ce que tout cela se résume à dire que vous utilisez les enfants JSON IEnumerable comme vous le feriez un tableau de paires de valeurs clés, accéder aux descendants nécessaires à l'aide de la syntaxe du carré. Le LINQ rend les choses un peu plus propres.

Mise à jour

Je ne sais pas si tel est votre cas, mais voici un article intéressant sur le sujet qui utilise des objets dynamiques http://www.west-wind.com/weblog/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing

Questions connexes