gpt4 book ai didi

arrays - 如何将 Dictionary 作为 JsonResult 返回,并在 JavaScript 中获得正确的结果?

转载 作者:行者123 更新时间:2023-12-01 05:42:51 24 4
gpt4 key购买 nike

我正在通过向已经存在的 JsonResult(从不同的方法返回)添加一些额外信息来在 Controller 中构建我的 JsonResult。为了添加更多属性,我将初始 JsonResult 转换为 Dictionary:

IDictionary<string, object> wrapper = (IDictionary<string, object>)new 
System.Web.Routing.RouteValueDictionary(json.Data);

然后我只是通过写 wrapper["..."] = "value" 添加数据.

该方法返回一个新的 JsonResult,包装器为 .Data:
new JsonResult() { wrapper, JsonRequestBehavior.AllowGet };

这就是麻烦开始的地方;虽然通信完美地发生,并且成功函数被调用,但我在 JavaScript 中使用的结果数组没有我期望的干净结构:而不是访问值 val = ret.PropName1;我最终不得不访问一个简单的索引数组,该数组又包含一个包含两对的字典: { "Value"="val, "Key"="PropName1" }; (所以像 o[0].Key 会给我属性名称)

我想知道是否有一种智能、快速的方法来重写 Controller 中的 JsonResult 创建,以便在 View 中获得一个漂亮的干净字典。
我有几个想法,但它们并不是特别干净:我可以在服务器端丢弃 JsonResult 重用,然后创建一个具有所有正确属性的匿名对象;或者,我可以在 Javascript 中创建一个翻译函数,它可以将结果翻译成一个新的 Array()。我正在寻找更好的解决方案。

[后期编辑] 数组之所以如此,是因为字典被定义为 <string, object> .如果是 <string, string> ,它将按照我最初期望的方式发送。但是因为我实际上使用了那个包中的对象,所以我就让它保持原样,并通过下面的函数传递 json 响应。

最佳答案

附录:在写上述问题时,我突然想到“坏”数组和“好”数组之间的转换确实很简单:

    function translateAjaxResult(ret) {
var result = new Array();

if (ret == null) return result;
for(var i = 0; i < ret.length; i++)
result[ret[i].Key] = ret[i].Value;
return result;
}

尽管如此,它仍然是一个问题的补丁,而不是一个问题的修复,所以我仍然想要一个更优雅的解决方案。

关于arrays - 如何将 Dictionary<string, Object> 作为 JsonResult 返回,并在 JavaScript 中获得正确的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4256337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com