为json字符串设计C#类的难度

时间:2013-09-03 02:54:02

标签: c# json class

我正在尝试处理将对象反序列化为我的设计类的任务。我将收到的字符串如下所示:

{nodename:"node1", version:"v1", PARM1:"p1", PARM2:"p2" ,…, PARAMN:"pn"}. 

据我了解,我需要一个这个json字符串的类,比如说Node是我的类名。我知道我可以通过在我的类Node中添加两个字段来轻松处理nodename和版本。但那套Params呢。因为这个字符串中的params数是动态的并且不受我控制,所以我不知道如何设计我的类。请详细说明这一点。或者你认为那是不可能的?提前致谢

2 个答案:

答案 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字符串中所有属性的其他信息。