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

我试过了:

  NameValueCollection Data = new NameValueCollection();

Data.Add("foo","baa");

string json = new JavaScriptSerializer().Serialize(Data);

它返回:["foo"]我期望{"foo" : "baa"} 如何执行此操作?

回答:

NameValueCollection不是IDictionary,因此JavaScriptSerializer无法直接将其序列化。您首先需要将其转换为字典,然后对其进行序列化。

:关于每个键多个值的问题之后,对的调用nvc[key]将简单地将它们返回,并以逗号分隔,这可能没问题。如果不是,则总是可以调用GetValues并决定如何适当地使用这些值。更新了下面的代码以显示一种可能的方法。

public class StackOverflow_7003740

{

static Dictionary<string, object> NvcToDictionary(NameValueCollection nvc, bool handleMultipleValuesPerKey)

{

var result = new Dictionary<string, object>();

foreach (string key in nvc.Keys)

{

if (handleMultipleValuesPerKey)

{

string[] values = nvc.GetValues(key);

if (values.Length == 1)

{

result.Add(key, values[0]);

}

else

{

result.Add(key, values);

}

}

else

{

result.Add(key, nvc[key]);

}

}

return result;

}

public static void Test()

{

NameValueCollection nvc = new NameValueCollection();

nvc.Add("foo", "bar");

nvc.Add("multiple", "first");

nvc.Add("multiple", "second");

foreach (var handleMultipleValuesPerKey in new bool[] { false, true })

{

if (handleMultipleValuesPerKey)

{

Console.WriteLine("Using special handling for multiple values per key");

}

var dict = NvcToDictionary(nvc, handleMultipleValuesPerKey);

string json = new JavaScriptSerializer().Serialize(dict);

Console.WriteLine(json);

Console.WriteLine();

}

}

}

以上是 如何将NameValueCollection转换为JSON字符串? 的全部内容, 来源链接: utcz.com/qa/413435.html

回到顶部