我正在实现一个实用工具方法,将queryString转换为JsonString。
我的代码如下:
public static string GetJsonStringFromQueryString(string queryString)
{
var nvs = HttpUtility.ParseQueryString(queryString);
var dict = nvs.AllKeys.ToDictionary(k => k, k => nvs[k]);
return JsonConvert.SerializeObject(dict, new KeyValuePairConverter());
}
当我使用以下代码进行测试时:
var postString = "product[description]=GreatStuff" +
"&product[extra_info]=Extra";
string json = JsonHelper<Product>.GetJsonStringFromQueryString(postString);
我得到了
{
"product[description]":"GreatStuff",
"product[extra_info]":"Extra",
...
}
我想得到的是
{
"product":{
"description": "GreatStuff",
"extra_info" : "Extra",
...
}
}
如何在不使用System.Web.Script程序集的情况下实现此目的? (我在Xamarin,无法访问该库)
答案 0 :(得分:0)
您需要删除product[key]
(产品属性名称或密钥...除外)部分才能获得所需内容...
也就是说,您应该在以这种方式解析之前预处理查询字符串:
string queryString = "product[description]=GreatStuff" +
"&product[extra_info]=Extra";
var queryStringCollection = HttpUtility.ParseQueryString(queryString);
var cleanQueryStringDictionary = queryStringCollection.AllKeys
.ToDictionary
(
key => key.Replace("product[", string.Empty).Replace("]", string.Empty),
key => queryStringCollection[key]
);
var holder = new { product = cleanQueryStringDictionary };
string jsonText = JsonConvert.SerializeObject(holder);