Convertir une ligne de données à un objet JSON
J'ai un datatable whis dispose d'une seule ligne et ressemble
America | Africa | Japan |
-------------------------------------------------------------
{"Id":1,"Title":"Ka"} | {"Id":2,"Title":"Sf"} | {"Id":3,"Title":"Ja","Values":{"ValID":4,"Type":"Okinawa"}}
La datatble colonnes sont l'Amérique ,l'Afrique ,le Japon
Maintenant je veux convertir la table de données en JSon tels que le json ressemble
{
"America": {
"Id": 1,
"Title": "Ka"
},
"Africa": {
"Id": 2,
"Title": "Sf"
},
"Japan": {
"Id": 3,
"Title": "Ja",
"Values": {
"ValID": 4,
"Type": "Okinawa"
}
}
}
Ma tentative a été ,
string js = JSonConvverter.Serializeobject(datatable);
var objType = JObject.Parse(js);
Mais cela n'a pas fonctionné.
Toute aide serait appréciée .Merci!
Vérifier Json.NET newtonsoft.com/json
Que voulez-vous dire Mais ça n'a pas fonctionné. il y Avait une exception levée, ou un autre problème?
Que voulez-vous dire Mais ça n'a pas fonctionné. il y Avait une exception levée, ou un autre problème?
OriginalL'auteur Sciguy13 | 2015-10-28
Vous devez vous connecter pour publier un commentaire.
Json.NET a un convertisseur intégré,
DataTableConverter
, qui génère des tableaux de données dans un format abrégé. Alors qu'il a également une pourDataSet
, il n'a pas l'convertisseur intégré pourDataRow
. Ainsi, lors de la sérialisation d'unDataRow
il va sérialiser tous les champs et les propriétés de laDataRow
résultant en une plus détaillé de sortie.Si vous souhaitez sérialiser un
DataRow
dans la forme plus compacte utilisé parDataTable
, la meilleure façon de le faire est de sérialiser l'ensemble de la table pour unJArray
à l'aide deJArray.FromObject()
et puis choisir le premier élément, comme suit:Sorties:
Exemple complet:
OriginalL'auteur dbc
Orthographe? Ne devrait pas votre appel à la "SerializeObject" de la méthode:
Voir aussi une question similaire sur la conversion d'un datatable à chaîne JSON.
OriginalL'auteur Gazzi
Comme Gazzi dit que vous devriez inclure la NewtonSoft.Librairie Json, il est inclus dans Visual Studio.
Pour obtenir un objet similaire à ce que vous avez décrit, vous devez créer un modèle de données, comme le Pays.cs qui devrait ressembler à ceci.
Créer une fonction d'aide à convertir les données de la table pour ces modèles. Ensuite, vous pouvez sérialiser/désérialiser les données en tant que de besoin à l'aide de la Newtonsoft Bibliothèque.
OriginalL'auteur David Price