Json.Net peut-il gérer un objet List & lt;
List<User> list = LoadUsers();
JObject json = new JObject();
json["users"] = new JValue(list);
Ne semble pas être en train de travailler?
Erreur:
Could not determine JSON object type for type System.Collections.Generic.List`1
source d'informationauteur mrblah | 2009-07-30
Vous devez vous connecter pour publier un commentaire.
Un
JValue
ne peut contenir que des valeurs simples comme les chaînes, les entiers, les booléens, les dates et la comme. Il ne peut pas contenir un objet complexe. Je soupçonne ce que vous voulez vraiment est-ce:Ci-dessus vous permet de convertir la liste de
User
objets dans unJArray
deJObjects
représentant les utilisateurs, puis l'assigner à lausers
bien sur la nouvelleJObject
. Vous pouvez le vérifier en examinant lesType
propriété dejson["users"]
et de voir qu'il estArray
.En revanche, si vous ne
json["users"] = new JValue(JsonConvert.SerializeObject(list))
comme il était suggéré dans une autre réponse à cette question (maintenant supprimé), vous n'aurez probablement pas obtenir le résultat que vous recherchez. Cette approche va sérialiser la liste des utilisateurs à une chaîne de caractères, créer un simpleJValue
de ça, et puis d'affecter laJValue
à lausers
bien sur laJObject
. Si vous examinez leType
propriété dejson["users"]
vous verrez que c'estString
. Ce que cela signifie est que, si plus tard vous essayez de convertir leJObject
JSON en utilisantjson.ToString()
vous obtiendrez le double de sérialisé de sortie au lieu de le JSON vous attendent probablement.Voici une courte démonstration pour illustrer la différence:
De sortie:
J'ai eu ce problème, vous pouvez maintenant utiliser JArray obtenir ce fait, si vous voulez juste les éléments de tableau avec aucun nom de la racine.
Si vous voulez que le nom de la racine du tableau json pour être "utilisateurs", vous pouvez utiliser