gpt4 book ai didi

c# - 如何将 NameValueCollection 转换为 JSON 字符串?

转载 作者:IT老高 更新时间:2023-10-28 12:46:58 25 4
gpt4 key购买 nike

我试过了:

  NameValueCollection Data = new NameValueCollection();
Data.Add("foo","baa");
string json = new JavaScriptSerializer().Serialize(Data);

它返回:["foo"] 我期望 {"foo": "baa"}我该怎么做?

最佳答案

序列化 NameValueCollection 的一种方法是首先将其转换为 Dictionary,然后序列化 Dictionary。转换成字典:

thenvc.AllKeys.ToDictionary(k => k, k => thenvc[k]);

如果需要频繁转换,也可以创建NameValueCollection的扩展方法:

public static class NVCExtender
{
public static IDictionary<string, string> ToDictionary(
this NameValueCollection source)
{
return source.AllKeys.ToDictionary(k => k, k => source[k]);
}
}

所以你可以像这样在一行中进行转换:

NameValueCollection Data = new NameValueCollection();
Data.Add("Foo", "baa");

var dict = Data.ToDictionary();

然后就可以序列化字典了:

var json = new JavaScriptSerializer().Serialize(dict);
// you get {"Foo":"baa"}

但是 NameValueCollection 一个键可以有多个值,例如:

NameValueCollection Data = new NameValueCollection();
Data.Add("Foo", "baa");
Data.Add("Foo", "again?");

如果你序列化它,你会得到 {"Foo":"baa,again?"} .

您可以修改转换器以生成 IDictionary<string, string[]>而是:

public static IDictionary<string, string[]> ToDictionary(
this NameValueCollection source)
{
return source.AllKeys.ToDictionary(k => k, k => source.GetValues(k));
}

所以你可以得到这样的序列化值:{"Foo":["baa","again?"]} .

关于c# - 如何将 NameValueCollection 转换为 JSON 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com