首页 > 解决方案 > Request.Form 序列化为 JSON 并遍历 JSON 中的所有属性

问题描述

我有 .NET Core Web API 项目和一个接受随机表单数据(无文件)的 API 查询。我需要将表单数据序列化为 JSON 并传递给服务。然后在服务中,我需要遍历每个 JSON 属性并进行一些处理。

我正在尝试这样的事情:

var json = JsonConvert.SerializeObject(Request.Form); //it isn't simple JSON

var jsonObject = new JObject();
var data = Request.Form.ToList();
for (var i = 0; i < data.Count; i++)
{        
    jsonObject.Add(data[i].Key, data[i].Value.ToString());
}

有没有其他方法可以做到这一点?遍历所有 JSON 属性怎么样?

标签: c#json.net-corejson.netasp.net-core-webapi

解决方案


我不确定您是否可以直接将 Request.Form 序列化为 JSON。

但是你可以这样尝试吗?

public static IDictionary<string, object> ToDictionary(this NameValueCollection col)
{
  var dict = new Dictionary<string, object>();

  foreach (var key in col.Keys)
  {
    dict.Add(key, col[key]);
  }

  return dict;
}

然后

var dictionary = Request.Form.ToDictionary();
string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented);

然后在服务上反序列化您的字符串。

Dictionary<string, object> dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);

推荐阅读