我需要将JSON字符串POST到页面.该页面是外部的,不受我的控制,它希望帖子数据采用网络形式的帖子格式(key1=value1&key2=value2)
如何将JSON字符串转换为此格式?
Bri*_*ers 10
这可以通过首先将JSON反序列化为a Dictionary<string, string>,然后遍历字典中的键值对并从中构建查询字符串来完成.
但是,请记住,查询字符串格式(application/x-www-form-urlencoded)不是分层格式,而JSON是.因此,您的JSON对象只能是具有键值对的简单对象(没有数组或嵌套对象).如果您的JSON比这更复杂,那么在将其转换为查询字符串之前,您必须做更多的工作来展平它.
演示:
class Program
{
static void Main(string[] args)
{
string json = @"
{
""key1"" : ""value1"",
""key2"" : ""value2"",
""int"" : 5,
""bool"" : true,
""decimal"" : 3.14,
""punct"" : ""x+y=z""
}";
var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, string> kvp in dict)
{
if (!string.IsNullOrEmpty(kvp.Key) && !string.IsNullOrEmpty(kvp.Value))
{
if (sb.Length > 0) sb.Append('&');
sb.Append(HttpUtility.UrlEncode(kvp.Key));
sb.Append('=');
sb.Append(HttpUtility.UrlEncode(kvp.Value));
}
}
var postDataString = sb.ToString();
Console.WriteLine(postDataString);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
key1=value1&key2=value2&int=5&bool=True&decimal=3.14&punct=x%2by%3dz
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7624 次 |
| 最近记录: |