【发布时间】:2018-02-13 23:04:44
【问题描述】:
我正在使用 ASP.NET MVC 5 在 .NET Framework 中运行。我有一个 MVC 控制器,它使用 Newtonsoft.Json(或 json.net)来构建一个不错的 JSON 对象。我遇到的问题是,当我使用JsonResult 方法Json(JSONdotnetObject) 返回我的json 时,我最终得到的结果与我预期的结构相同,但所有内容都是空的JArrays,如下所示:
预期:
{
"prop": {
... some stuff ...
},
"another prop": {
... more stuff ...
}
}
实际:
[
[
... empty ...
],
[
... also empty ...
]
]
这是代码:
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);
}
这不是确切的结构,但希望它能说明我正在经历的事情。我已经在 VS 中逐行浏览了程序,JsonResult 对象在JsonResult.Data 字段中正确保存了JObject,但是当它返回时,ASP.NET 执行的序列化出现问题,这导致我失去了我美丽的 JSON 对象 :*(
我通过简单地从方法中返回 JObject 而不是 ActionResult 来解决这个问题,但这并不理想,因为我必须使用 Result.ContentType 手动设置响应标头,这感觉就像是 hack .
如果您有任何想法或可以使用更多细节,请告诉我。感谢您的宝贵时间。
【问题讨论】:
-
您需要添加一些代码以便我们看到您在做什么
-
会的。我将添加一些我正在做的代码方面的基本实现。
-
如果它是空的,我们需要看看你是如何填充对象的。
-
编辑添加了一些关于我如何填充对象的细节。
标签: c# asp.net .net asp.net-mvc-5 json.net