我正在实现一种实用程序方法,将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上,无法访问该库)

最佳答案

您需要删除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);

关于c# - Json.Net将复杂的查询字符串转换为JsonString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31146621/

10-11 00:16