从嵌套的 Json 对象中读取值
Posted
技术标签:
【中文标题】从嵌套的 Json 对象中读取值【英文标题】:Read value from nested Json object 【发布时间】:2020-11-09 02:08:54 【问题描述】:我正在尝试从嵌套的 Json 对象中读取一个值,但我收到了 Parse 错误:
我的 Json 对象:
"MessageId": "f6774927-37cf-4608-b985-14a7d86a38f9",
"Time": "2017-04-06T16:28:38.0719933+02:00",
"Data":
"ID":
"value": "0008044834"
,
"Carrier":
"value": 0
,
"Tool":
"value": 0
var myJsonString = File.ReadAllText(_currentDictory.FullName + @"\test\" + completeFilename);
var myJObject = JObject.Parse(myJsonString);
var serial = myJObject.SelectToken("Data.ID").Value<String>();
System.InvalidCastException
HResult=0x80004002
Message=Cannot cast Newtonsoft.Json.Linq.JObject to Newtonsoft.Json.Linq.JToken.
Source=Newtonsoft.Json
读取“MessageID”等其他值没有任何问题,但一旦我尝试获取“Data.XYZ”,我就会收到上述错误。
【问题讨论】:
【参考方案1】:您需要将value
添加到您的json 路径中:
var serial = myJObject.SelectToken("Data.ID.value").Value<String>();
您当前的路径选择了JObject
,其中包含一个名为value
的属性,您无法将其直接转换为字符串。
【讨论】:
【参考方案2】:MessageId 是一个字符串。所以你可以直接读取它的值。 另一方面,数据包含对象(参见 和 )。因此你需要使用
var serial = myJObject.SelectToken("Data.ID.value").Value<String>();
另见: Getting 'Cannot cast Newtonsoft.Json.Linq.JObject to Newtonsoft.Json.Linq.JToken' when retrieving items from JSON
【讨论】:
以上是关于从嵌套的 Json 对象中读取值的主要内容,如果未能解决你的问题,请参考以下文章
使用 python/pandas 从特定文件夹中读取几个嵌套的 .json 文件到 excel 中