C# JObject 作为一个空列表到达前面

C# JObject arrives to the front as an empty list

我正在使用 jQuery Ajax 将 Newtonsoft 对象从 MVC 控制器任务发送到前端,但我一直在努力解决这个问题。出于某种原因,对象作为一个空列表到达,我试图简化对象,认为问题是嵌套其他对象的结构,但即使在最简单的情况下它也不起作用。 我按照另一个问题 中所述更新了 Newtonsoft 的版本,但我的问题仍然存在。我知道这看起来很简单,但我不确定我可能做错了什么。 这是控制器中的方法

[HttpPost]
public async Task<JsonResult> Something(string data)
{
            //some asynchronous stuff
            var jsonObject = new JObject();
            jsonObject.Add("x", "text");
            return Json(jsonObject);
}

我的JQueryajax电话

 $.ajax({
            type: "POST",
            url: url,
            data: JSON.stringify(parameters),
            contentType: "application/json",
            success: function (data) {
               debugger;
            }
        }).fail(function (jqXHR, textStatus, errorThrown) {          
});

答案是这样的

[[[]]]

我快被这个问题搞疯了,非常感谢任何建议

我在你的代码中看不到任何异步,但无论如何都试试这个。并且最好使用 ActionResult 而不是 JsonResult。在这两种情况下,json 都将被 return 编辑,但 ActionResult 允许 return 如果存在一些问题

错误请求
public async Task<ActionResult> Something()
{
     if(some promble) return BadRequest("problem");

     return Ok( new { x="text"} );
}

我对自己的问题添加了一个答案,希望它可以帮助处于相同情况的其他人。 我用以下方式包装了答案,现在它工作正常。我不确定为什么不能直接发送它,但可能与嵌套对象的问题有关。

JsonResult data = new JsonResult();
        data.Data = new
        {
            success = true,
            result = JsonConvert.SerializeObject(rta.Data)
        };

注意字符串的最大长度也可能有用,因为如果原始对象太大,这可能会增加更多问题。

如果对象不是那么大,这可能是更好的选择,如

所述