ParsingJSONinJSON.NETWithUnknownPropertyName我有一些JSON数据如下:"code":"OK","user":{"userid":"2630944","firstname":"John","lastname":"Doe","reference":"999999999","guid":"StringValue","domainid":"99999","username":"jdoe","email":"jdoe@jdoe.edu","passwordquestion":"","flags":"0","lastlogindate":“2013-02-05T17:54:06.31Z”,“创建日期”:“2011-04-15T14:40:07.22Z”,“版本”:“3753”,“数据”:{“别名”:{“$value":"JohnDoe"},"smsaddress":{"$value":"5555555555@messaging.sprintpcs.com"},"blti":{"hideemail":"false","hidefullname":"false"},"notify":{"grades":{"$value":"0"},"messages":{"$value":"1"}},"beta_component_courseplanexpress_1":{"$value":"true"}}}}我正在使用C#和JSON.NET来解析数据。我已经能够使用此算法成功获取数据:UserMyUser=newUser();JToken数据=JObject.Parse(json);MyUser.FirstName=(string)data.SelectToken("response.user.firstname");//所有其他属性都相同。问题出在数据字段上。该字段主要基于用户偏好,仅在使用时插入数据。这些字段都是自定义的,开发人员可以无限制地输入任意数量的字段。本质上,它都是自由格式的数据。此外,正如您所注意到的,它们可以嵌套在离数据很远的地方。我试过运行:MyUser.Data=JsonConvert.DeserializeObject((string)data.SelectToken("response.user.data");这不起作用。如何将其转换为在C#对象中使用?您可以通过JToken/JArray/JObject方法访问它。例如,这将列出数据下的所有关键字:publicclassStackOverflow_14714085{conststringJSON=@"{""response"":{""_token"":""StringValue"",""code"":""OK"",""user"":{""userid"":""2630944"",""firstname"":""John",""lastname"":""Doe",""reference"":""999999999"",""guid"":""StringValue",""domainid"":""99999"",""username"":""jdoe",""email"":""jdoe@jdoe.edu"",""passwordquestion"":"""",""flags"":""0"",""lastlogindate"":""2013-02-05T17:54:06.31Z"",""creationdate"":""2011-04-15T14:40:07.22Z"",""version"":""3753"",""data"":{""别名"":{""$value"":""JohnDoe""},""smsaddress"":{""$value"":""5555555555@messaging.sprintpcs.com""},""blti"":{""hideemail"":""false"",""hidefullname"":""false""},""notify"":{""grades"":{""$value"":""0""},""messages"":{""$value"":""1""}},""beta_component_courseplanexpress_1"":{""$value"":""true""}}}}}";publicstaticvoidTest(){varjo=JObject.Parse(JSON);变量数据=(J对象)jo["响应"]["用户"]["数据"];foreach(varitemindata){Console.WriteLine("{0}:{1}",item.Key,item.Value);如果它适合你,Json.NET实际上可以解析为动态,这意味着你可以做类似的事情。动态解析对象=JsonConvert。DeserializeObject("{测试:"文本值"}");parsedObject[“测试”];//“文本值”parsedObject.test;//“文本值”parsedObject.notHere;//null编辑:如果您不知道自己在寻找什么,那么迭代这些值可能会更好。以上就是C#学习教程:JSON.NET中使用未知属性名解析JSON的全部内容分享。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——dynamicparsedObject=JsonConvert.DeserializeObject("{test:{inner:"text-value"}}");foreach(parsedObject中的动态条目){stringname=entry.Name;//“测试”动态值=entry.Value;//{inner:"text-value"}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
