嗨,我有一个名为attribute的现有类(如下),具有静态属性的基本集合。我正在使用此类通过JavaScriptSerializer进行序列化和反序列化
public class attributes
{
public string static1 {get; set;}
public string static2 {get; set;}
public string static3 {get; set;}
}
我当前基于上面的此类属性的示例JSON
{
"static1": "val1",
"static2": "val2",
"static3": "val3"
}
我需要对类进行修改,以便保留基本集并扩展此类以接受新格式。我将从供应商那里收到新的JSON,他们将在其中附加属性的动态部分(在我的示例JSON中,从1到N)。这样,现有的静态属性基本集将可以访问,并且还提供了动态的属性列表(范围可以从0到n-意味着如果没有其他可用的属性,则它可以与静态的JSON相同,或者可以具有3静态属性+其他一些附加属性
具有动态和静态JSON的新
{
"static1": "val1",
"static2": "val2",
"static3": "val3",
"dynamic1": "dyn1",
.
.
"dynamicN": "dynN"
}
任何人都可以提供一些有关如何最好地表示这个新类的信息,从而满足新的要求(在我获得的JSON中可能有更多属性)?
谢谢
答案 0 :(得分:1)
您可以尝试使用dynamic
对象来手动解析您的json
结果。
类似这样的东西(使用Newtonsoft.Json):
dynamic json = JsonConvert.DeserializeObject(jsonResult);
foreach (dynamic item in json)
{
//manually get the values
var static1= item["static1"];
var static2= item["static2"];
.......
}
答案 1 :(得分:1)
您可以使用dynamics type variable来获取未在您的课程中映射的JSON信息
var json = new JavaScriptSerializer();
string data = "{ "+
"\"0\": {" +
" \"sku\": \"trickeye\", " +
" \"calendar_type\": \"date\", " +
" \"voucher_type\": \"Instant Voucher\" " +
"},"+
" \"1\": { " +
" \"sku\": \"lovemuseum\", " +
" \"calendar_type\": \"date\", " +
" \"voucher_type\": \"Instant Voucher\"} " +
"}";
dynamic dictionary = json.DeserializeObject(data);
var firstDefinition = dictionary["0"] as Dictionary<string, object>;
Console.WriteLine(firstDefinition);
Console.WriteLine(dictionary["0"]["sku"].ToString());