我正在尝试处理将对象反序列化为我的设计类的任务。我将收到的字符串如下所示:
{nodename:"node1", version:"v1", PARM1:"p1", PARM2:"p2" ,…, PARAMN:"pn"}.
据我了解,我需要一个这个json字符串的类,比如说Node是我的类名。我知道我可以通过在我的类Node中添加两个字段来轻松处理nodename和版本。但那套Params呢。因为这个字符串中的params数是动态的并且不受我控制,所以我不知道如何设计我的类。请详细说明这一点。或者你认为那是不可能的?提前致谢
答案 0 :(得分:1)
您可以使用像List
这样的通用集合public class ResultObject { public string NodeName { get; set; } public string Version { get; set; } public List<string> Params { get; set; } }
如果Params名称和类型不是问题,请使用上面的代码。如果您想要Param1,Param2,... ParamN作为您的参数,那么:
public class ResultObject { public string NodeName { get; set; } public string Version { get; set; } public Dictionary<string, string> Params { get; set; } }
然后你可以使用var x = Params [“Param1”]之类的密钥访问Params,等等。
答案 1 :(得分:0)
在代码中表示json的最简单方法是,如果您知道所有属性值都是字符串,则反序列化为Dictionary<string, object>
或Dictionary<string, string>
。
根据您的json序列化程序,语法可能有所不同。这是使用Microsoft JavaScriptSerializer
。
var serializer = new JavaScriptSerializer();
var dict = serializer.Deserialize<Dictionary<string, string>>(jsonString);
Console.WriteLine(dict["nodename"]); // "node1"
Console.WriteLIne(dict["PARM1"]); // "p1"
您还可以使用Dictionary.Keys
属性获取json字符串中所有属性的其他信息。