使用Newtonsoft.Json反序列化含XML声明的JSON后,如何正确访问其中的用户数据?
如何正确访问Newtonsoft.Json反序列化后的动态对象数据
看起来你在访问反序列化后的动态对象时搞错了节点路径和访问方式,咱们一步步来修正:
首先看你的JSON结构,它的顶级节点是?xml和USER_DETAILS,并没有数组或者USER_LOGON节点,所以你之前用resultJson2[1].USER_LOGON.USER的方式完全不符合实际结构。
用Newtonsoft.Json反序列化得到的dynamic对象,你需要按属性名称直接访问,而不是数组索引(除非节点本身是数组类型)。正确的访问步骤应该是这样的:
// 先执行反序列化 dynamic resultJson2 = JsonConvert.DeserializeObject(MyJsonString); // 先获取USER_DETAILS下的USER对象 dynamic user = resultJson2.USER_DETAILS.USER; // 然后就可以直接访问具体的用户字段了 string userId = user.USR_ID; string firstName = user.USR_FIRST_NAME; string lastName = user.USR_LAST_NAME;
如果之后再遇到类似的问题,建议你在调试时查看dynamic对象的属性结构(比如在Visual Studio的调试窗口里展开对象),或者把对象转成字符串输出,确认每个节点的名称和层级,避免路径错误。
内容的提问来源于stack exchange,提问作者Alon S




