【问题标题】:mvc return JsonArray as Jsonmvc 将 JsonArray 作为 Json 返回
【发布时间】:2012-11-26 10:18:46
【问题描述】:

我正在尝试在 mvc 中向客户端返回一个动态 json 数组。

到目前为止我有

            var a = 1;
            var b = 10;
            var jsonArray = new JArray();

            for (var i = 1; i < 5; i++)
            {
                var json = new JObject();
                json.Add("field" + a, b);

                jsonArray.Add(json);
                a++;
                b++;
            }

            return Json(jsonArray);

返回给客户端

[[[[]]]]

我尝试先将 JsonArray 转换为字符串并将其设置为没有格式化程序,但根据提琴手,这不会返回有效的 json。

我希望结果是这样的:

[{field1:10},{field2:11},{field3:12}]

谁能指出我做错了什么

【问题讨论】:

    标签: json asp.net-mvc-4 json.net


    【解决方案1】:

    这在 Fiddler 中通过了集合:

    return Json(new { JsonArray = jsonArray.ToString() });
    

    Fiddler 似乎需要{ "FieldName": value } 形式的 JSON 对象,因此我创建了一个匿名对象。您可以使用任何名称代替JsonArray

    简单地返回Json(jsonArray) 是行不通的,因为jsonArray 的底层表示与您想要的输出不同,因此您在序列化它时看到的输出。

    【讨论】:

    • 这用 \r\n 字符填充了我的回复。我需要返回没有它们的结果。
    • @bcr 如果您的操作方法返回类型是“对象”并且您返回 JArray,mvc 将序列化 jarray(它不会是它包含的 json)。如果您的操作返回 JsonResult 由 nick_w 回答,则 tostring 将意味着整个 jarray 只是一个转义字符串。您需要使用 ContentResult 与 contentType 'application/json' 和 jarray.ToString() 作为内容值
    • 用于 api 控制器的 HttpResponseMessage
    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 2023-03-07
    • 2015-07-24
    • 2011-04-14
    • 2015-07-26
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    相关资源
    最近更新 更多