Pet*_*nen 1 .net c# asp.net json.net asp.net-mvc-5
我正在使用 ASP.NET MVC 5 在 .NET Framework 中操作。我有一个 MVC 控制器,它使用Newtonsoft.Json(或 json.net)来构建一个不错的 JSON 对象。我遇到的问题是,当我使用JsonResult方法返回我的 json 时Json(JSONdotnetObject),我最终得到的结果与我期望的结构相同,但一切都是空的,JArrays如下所示:
预期的:
{
"prop": {
... some stuff ...
},
"another prop": {
... more stuff ...
}
}
Run Code Online (Sandbox Code Playgroud)
实际的:
[
[
... empty ...
],
[
... also empty ...
]
]
Run Code Online (Sandbox Code Playgroud)
这是代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
这不是确切的结构,但希望它说明了我正在经历的事情。我已经通过程序一行一行在VS消失,JsonResult对象正确保存JObject在JsonResult.Data现场,但是当它返回时出现错误与ASP.NET执行,是造成我失去了我美丽的JSON对象序列化:* (
我通过简单地返回一个JObject而不是一个来解决这个问题ActionResult从方法来但这并不理想,因为我必须手动设置响应标头,使用Result.ContentType这感觉就像一个黑客。
如果您有任何想法或可以使用更多细节,请告诉我。感谢您的时间。
问题是JsonMVC Controller类中的方法JavaScriptSerializer内部使用(不是Json.Net),不知道如何JObject正确序列化a 。尝试使用该Content方法:
public ActionResult methodName(string input) {
JObject myJSON = new JObject();
// Populate myJSON with children
return Content(myJSON.ToString(), "application/json", Encoding.UTF8);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以实现自己的JsonNetResult类,如 James Newton-King 的博客文章ASP.NET MVC 和 Json.NET 所示。
| 归档时间: |
|
| 查看次数: |
1882 次 |
| 最近记录: |