如何将查询字符串转换为JSON字符串?

17

如何使用服务器端的C#将查询字符串转换为键和值的JSON字符串?例如,我想转换

"ID=951357852456&FNAME=Jaime&LNAME=Lopez"

{ "ID":"951357852456" , "FNAME":"Jaime" , "LNAME":"Lopez" }

我知道如何手动解析和格式化,但在开始之前,我想问一下,因为可能有更好的库可以做到这一点。谢谢!

3个回答

32

这会给出你想要的完全相同的 JSON。

var dict = HttpUtility.ParseQueryString("ID=951357852456&FNAME=Jaime&LNAME=Lopez");
var json = new JavaScriptSerializer().Serialize(
                    dict.AllKeys.ToDictionary(k => k, k => dict[k])
           );

2
你如何处理数组? - Arman Bimatov
1
被接受的答案并不意味着它恰好符合所要求的。你的代码的结果可能会是这样的 { "key": "keyName", "val": "value"},而原帖要求的是 { "keyName": "value" } - Rafael Herscovici
3
您的代码运行结果将是......,不,这有什么难以理解的,我刚刚重新运行了上述代码,并得到了{"ID":"951357852456","FNAME":"Jaime","LNAME":"Lopez"}。下次请确保如果您不想对正确的答案进行负评。 - L.B
1
@L.B 这个答案不够精确,如果查询字符串中有数组,它将无法正常工作。也许这是可以接受的,但最好还是指明这个限制。 - Skary
如果你正在使用ASP.NET Core,你应该使用QueryHelpers而不是HttpUtility。更多细节请参考这篇帖子:https://stackoverflow.com/a/29993210/5920517 - undefined
显示剩余3条评论

7

也可以使用

var collection = HttpUtility.ParseQueryString(query);
Newtonsoft.Json.JsonConvert.SerializeObject(collection.AllKeys.ToDictionary(y => y, y => collection[y]));

-3
你可以使用 jQuery 来实现这个功能:jQuery.Param

1
OP正在寻求一种服务器端解决方案。 - Justin Self

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接