Je fonctionne dans .NET Framework à l'aide d'ASP.NET MVC 5. J'ai un contrôleur MVC qui utilise Newtonsoft.Json
(ou json.net) pour créer un objet JSON sympa . Le problème que je suis en cours d'exécution en est que lorsque je retourne mon JSON en utilisant la méthode JsonResult
Json(JSONdotnetObject)
, je me retrouve avec un résultat qui a la même structure que ce que je pense, mais tout est vide JArrays
comme ceci:Les objets JSON sont sérialisés à des parenthèses vides lorsqu'ils sont renvoyés à l'aide de JsonResult
attendu:
{
"prop": {
... some stuff ...
},
"another prop": {
... more stuff ...
}
}
Actual:
[
[
... empty ...
],
[
... also empty ...
]
]
Et voici le code:
public ActionResult methodName(string input) {
JObject myJSON = new JObject();
// Populate myJSON with children
foreach (Thing thing in ExistingEntityFrameworkCustomClass) {
JObject newChild = new JObject();
// Add some props to newChild using newChild["propName"] = thing.Property
myJSON.Add(newChild.UniqueIdTakenFromEntity.ToString(), newChild);
}
// The JsonResult successfully populates it's Data field with myJSON before returning.
return Json(myJSON, JsonRequestBehavoir.AllowGet);
}
Ce n'est pas la structure exacte, mais j'espère que cela illustre ce que je vis. J'ai parcouru le programme ligne par ligne dans VS et l'objet JsonResult
contient correctement le JObject
dans le champ JsonResult.Data
, mais quand il retourne quelque chose ne va pas avec la sérialisation qu'ASP.NET effectue qui me fait perdre mon beau JSON objet: * (
je travaille autour de cette question en retournant simplement un JObject
au lieu d'un ActionResult
de la méthode, mais ce n'est pas idéal parce que je dois ensuite régler manuellement les en-têtes de réponse à l'aide Result.ContentType
qui se sent comme un hack.
Permettez-moi de savoir si vous avez des idées ou pouvez utiliser plus de détails. Nous vous remercions de votre temps.
Vous devez ajouter du code afin que nous puissions voir ce que vous faites – JSON
Will do. J'ajouterai une implémentation de base de ce que je fais par code. –
Si c'est vide, nous devons voir comment vous peuplez l'objet. – Amy