我有一些JSON数据,看起来像这样:通过JSON在JSON.NET解析未知属性名称
{
"response":{
"_token":"StringValue",
"code":"OK",
"user":{
"userid":"2630944",
"firstname":"John",
"lastname":"Doe",
"reference":"999999999",
"guid":"StringValue",
"domainid":"99999",
"username":"jdoe",
"email":"[email protected]",
"passwordquestion":"",
"flags":"0",
"lastlogindate":"2013-02-05T17:54:06.31Z",
"creationdate":"2011-04-15T14:40:07.22Z",
"version":"3753",
"data":{
"aliasname":{
"$value":"John Doe"
},
"smsaddress":{
"$value":"[email protected]"
},
"blti":{
"hideemail":"false",
"hidefullname":"false"
},
"notify":{
"grades":{
"$value":"0"
},
"messages":{
"$value":"1"
}
},
"beta_component_courseplanexpress_1":{
"$value":"true"
}
}
}
}
我使用C#与JSON.NET通过数据来分析。我已经能够使用该算法成功地获得数据:
User MyUser = new User();
JToken data = JObject.Parse(json);
MyUser.FirstName = (string) data.SelectToken("response.user.firstname");
//The same for all the other properties.
的问题是与data
领域。该字段主要基于用户首选项,数据仅在使用时插入。这些字段都是自定义的,开发人员可以根据需要放入任意数量,而不受限制。从本质上讲,它是所有自由形式的数据。同样如你所注意到的,它们可以与数据嵌套得很远。
我试图运行:
MyUser.Data = JsonConvert.DeserializeObject<List<JToken>>((string) data.SelectToken("response.user.data");
不工作。
你会如何将它转换为用于C#对象?
@KenKin目前我正在查看字典以存储数据。其他成员变量只是简单的字符串属性,这使得通过MyUser.FirstName访问变得非常简单。这个问题真的集中在JSON的'data'部分,其余部分纯粹是为了参考。 – claydiffrient