繁体   English   中英

具有动态结构的类对象

[英]Class Object with Dynamic Structure

嗨我试图用C#DataContractJsonSerializer的帮助解析一个json对象这就是json可能看起来像

{“user_id”:“121”,“Q1”:“问题1”,“Q2”:“问题2”,“Q3”:“问题3”}

问题的数量可以是200-500,所以我不想用500变量制作一个DataContract来解析这个Json,所以我在想是否有一种方法可以用一个数字来调用构造函数或者这个类对象的东西如果在jSon中有Q1-Q30,则这样的参数

Objectparse new_object = new Objectparse(30);

哪个会在运行时创建Q1到Q30的变量? 并解析Json

你可以使用JavaScriptSerializer

var json = @"{""user_id"":""121"",""Q1"":""question 1"",""Q2"":""question 2"",""Q3"":""question 3""}";
var serializer = new JavaScriptSerializer();
dynamic result = serializer.DeserializeObject(json);
Console.WriteLine(result["Q1"]);
Console.WriteLine(result["Q2"]);
...

如果您使用的是旧版本的.NET而不是4.0并且无法使用dynamic功能,则可以执行以下操作:

var json = @"{""user_id"":""121"",""Q1"":""question 1"",""Q2"":""question 2"",""Q3"":""question 3""}";
var serializer = new JavaScriptSerializer();
var result = (IDictionary<string, object>)serializer.DeserializeObject(json);
Console.WriteLine(result["Q1"]);
Console.WriteLine(result["Q2"]);
...

但我要指出,这是一个非常糟糕的JSON设计。 设计这个类的人可能不知道javascript数组:

{
    "user_id": "121",
    "questions": [
        {
            "key": "Q1",
            "value": "question 1"
        },
        {
            "key": "Q2",
            "value": "question 2"
        },
        {
            "key": "Q3",
            "value": "question 3"
        }
    ]
}

现在可以将其序列化为包含问题集合的强类型对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM