如何使用 GET 请求将 JSON 数组传递给 Controller 方法?

Posted

技术标签:

【中文标题】如何使用 GET 请求将 JSON 数组传递给 Controller 方法?【英文标题】:How to pass a JSON array to Controller method by using GET request? 【发布时间】:2021-08-12 14:23:56 【问题描述】:

我有一个这样的控制器方法:

[GET]
public ActionResult GetFailureInfo(List<FailureInfoModel> failureInfoModels)

我有一个这样的模型:

public class FailureInfoModel 
      public int Id get; set;
      public List<string> Reasons get; set;

现在我想通过在前端使用 window.open() 来传递 json 数据,如下所示:

<script type="text/javascript">
    var json = 
        [
            
                Id:111,
                Reasons:[1,2]
            
        ];
    var formatJson = JSON.stringify(failureInfoModels : json);
    
    window.open("url?failureInfoModels=" + escape(formatJson))
</script>

但是只能得到一个包含 0 个项目的 List 对象。 我应该如何更改我的代码来解决这个问题? 谢谢。

【问题讨论】:

至少有一个问题是你的原因数组有数字而不是字符串 【参考方案1】:

将输入更改为字符串并对其进行反序列化。

1. public ActionResult GetFailureInfo(string failureInfoModels = "")  
          
2.  List<FailureInfoModel> failuresData = JsonConvert.DeserializeObject<List<FailureInfoModel>>(failureInfoModels);  

【讨论】:

以上是关于如何使用 GET 请求将 JSON 数组传递给 Controller 方法?的主要内容,如果未能解决你的问题,请参考以下文章

get请求如何传递数组参数

使用请求将 json 输入传递给 API

通过 GET 将 JSON 数组传递给 MVC Web API

遍历一个url数组并将它们传递给get_json,返回新的数据数组[重复]

如何将 JSON 字符串转换为数组

java如何接收ajax传递的json类型的数据