如何将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