我试图将求职返回作为我的动作。我已经使用Newtonsoft.Json
和JSONNETRESULT将对象转换为JSONRESULT。对于普通对象,我使用此语法将对象序列化为jsonresult:
return new JsonResult
{
ContentType = "application/json",
ContentEncoding = System.Text.Encoding.UTF8,
Data = myResult,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
哪个 myResult
是所需对象的实例,但是在下面尝试使用该求解( Newtonsoft.Json.Linq.JObject
),返回无效结果,即 [[[]]]
:
JObject jsonObject = new JObject();
jsonObject["error"] = "invalid_id";
return new JsonResult
{
ContentType = "application/json",
ContentEncoding = System.Text.Encoding.UTF8,
Data = jsonObject,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
在这种情况下如何序列化局限?
这对我有用!
var serialized = JsonConvert.SerializeObject(response,
new JsonSerializerSettings() {
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
return new ContentResult()
{
Content = serialized,
ContentType = "application/json",
};
响应是包含类型局限性属性的C#类的一个实例。这导致确定为返回空数组符号([]) aborject中的每个属性。手动序列化并将其返回为 contentResult 为我解决了。
您可以尝试:
public JsonObject GetJson_1()
{
var errors = new Dictionary<string, string>();
errors.Add("Id", "invalid");
return new JsonObject(errors);
}
public ActionResult GetJson_2()
{
var errors = new List<object>();
errors.Add(new { Id = "invalid" });
return Json(errors, JsonRequestBehavior.AllowGet);
}
希望这会有所帮助!