C# MVC 控制器方法里面,如何接收JSON数组参数,我的代码这样写接收不到

ph3405 2019-10-31 01:18:04
// 被调用接口,接收和解析JSON参数
public ActionResult ParseJson(string RZSJ, string LDSJ, List<Dictionary<string, string>> param)
{
//处理param,我在这里接收不到param的值,显示为空,用List或string都不行

return Content("RZSJ:" + RZSJ + ",LDSJ:" + LDSJ);
}

//用Http Post模拟调用接口
public ActionResult TestPostJson2()
{
//JSON格式入参
string param = "{\"param\":{\"FXBM\":[{\"FXBM\":\"GK\"},{\"FXBM\":\"FK\"},{\"FXBM\":\"HK\"}],\"FTBM\":[{\"FTBM\":\"VC\"},{\"FTBM\":\"VI\"},{\"FTBM\":\"VD\"}]},\"RZSJ\":\"2019-10-30\",\"LDSJ\":\"2019-10-31\"}";

string result = Post("http://localhost:19992/PMS/ParseJson", param);
return Content("result:" + result);
}


public string Post(string Url, string jsonParas)
{
string strURL = Url;
//创建一个HTTP请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
//Post请求方式
request.Method = "POST";
//内容类型
request.ContentType = "application/json";

//设置参数,并进行URL编码

string paraUrlCoded = jsonParas;//System.Web.HttpUtility.UrlEncode(jsonParas);

byte[] payload;
//将Json字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
//设置请求的ContentLength
request.ContentLength = payload.Length;
//发送请求,获得请求流

Stream writer;
try
{
writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
}
catch (Exception)
{
writer = null;
Console.Write("连接服务器失败!");
}
//将请求参数写入流
writer.Write(payload, 0, payload.Length);
writer.Close();//关闭请求流
// String strValue = "";//strValue为http响应所返回的字符流
HttpWebResponse response;
try
{
//获得响应流
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}
Stream s = response.GetResponseStream();
// Stream postData = Request.InputStream;
StreamReader sRead = new StreamReader(s);
string postContent = sRead.ReadToEnd();
sRead.Close();
return postContent;//返回Json数据
}
...全文
1358 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rifnxa 2019-11-09
  • 打赏
  • 举报
回复
因为你POST的只是个字符串
webjock 2019-11-07
  • 打赏
  • 举报
回复
string result = Post("http://localhost:19992/PMS/ParseJson", param); 这个post的方法里,你把param的参数名改为json,那你的json=param。 在PMS/ParseJson,这个Controller的方法如下,请参考使用:

[HttpPost]
public ActionResult ParseJson(string json)
{
    dynamic model = Newtonsoft.Json.Linq.JToken.Parse(json) as dynamic;//解析
    string v = model.LDSJ;//直接取值LDSJ
    return View();
}
lijing3333 2019-11-05
  • 打赏
  • 举报
回复
改成 ParseJson() request.form["param"] 要是不能取到值就是传参的问题。。。
  • 打赏
  • 举报
回复
自己写一个类来当方法参数

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧