引入NewtonSoft.Json;
有時需要動態(tài)一層一層解析Json數(shù)據(jù),JObject是一個Json對象,但是當(dāng)我們?nèi)∧硞€key的值后,得到的是一個JToken對象,JOject就是繼承自JToken,所以可以理解為,JOjbect實例,就是一種JToken類型,但是僅是其中的一種。JToken內(nèi)部實現(xiàn)了 operator (type) 類型強轉(zhuǎn),包括常用的一些值類型bool, byte,short, ushort ,uint, ulong, double, TimeSpan, GUID, DateTime, DateTimeOffset等等 以及引用類型string的類型強轉(zhuǎn),也提供了這些類型的反向強轉(zhuǎn) type operator(JToken), 將它們強置轉(zhuǎn)換為JToken類型。但是它不包括JObject的強轉(zhuǎn)。通常JToken轉(zhuǎn)JToken代碼如下:
string json = "{}"; //json字符串
string sValue = string.Empty;
JObject joValue = JObject.Parse(json);
foreach (var key in keys)
{
JToken _token = joValue[key];
if(_token is null)
{
return default;
}
if(_token.Type == JTokenType.String)
{
sValue = (string)_token;
break;
}else if(_token.Type == JTokenType.Object)
{
joValue = JObject.FromObject(_token);
}
}