【发布时间】:2014-12-11 10:34:53
【问题描述】:
我想将一个 json 字符串转换为 NameValueCollection。我想出了下面的代码。
public static NameValueCollection ConvertFromJson(string json)
{
var anonymous = JContainer.Parse(json);
var nvc = new NameValueCollection();
var dict = new RouteValueDictionary(anonymous);
foreach (var kvp in dict)
{
if (kvp.Value == null)
{
// I am OK if a property is null. Just skip it.
continue;
}
if (kvp.Value.GetType().Name.Contains("Anonymous"))
{
var prefix = kvp.Key + ".";
foreach (var innerkvp in new RouteValueDictionary(kvp.Value))
{
nvc.Add(prefix + innerkvp.Key, innerkvp.Value.ToString());
}
}
else
{
nvc.Add(kvp.Key, kvp.Value.ToString());
}
}
return nvc;
}
它适用于普通类,但不适用于嵌套类。例如,它适用于class A,但不适用于class B。
class A
{
public string AAA { get; set; }
public int BBB { get; set; }
}
class B
{
public string AAA { get; set; }
public MyOtherClass BBB { get; set; }
}
如何将嵌套对象转换为 NameValueCollection?
解释
这个问题绝对不会与How to convert json to NameValueCollection 重复。该问题的答案仅适用于class A,但不适用于class B。
【问题讨论】:
-
您希望如何将
MyOtherClass表示为字符串? -
@BenRobinson 坦率地说,我不知道。我想序列化和反序列化它。有没有办法,例如,我需要实现一些接口才能使其工作?
-
我不能分享我的代码,但你真的需要看看 Json.NET。它完全支持按照您描述的方式解析 json。
-
@code4life 谢谢。我现在正在调查。
-
@code4life 你的意思是 JsonConvert 吗?如果是这样,它不适用于我遇到的问题。