ASP.NET MVC:返回Jobject作为JSONRESULT



我试图将求职返回作为我的动作。我已经使用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);
    }

希望这会有所帮助!

相关内容

  • 没有找到相关文章

最新更新