引入NewtonSoft.Json;
有时需要动态一层一层解析Json
数据,JObject
是一个Json
对象,但是当我们取某个key
的值后,得到的是一个JToken
对象,JOject
就是继承自JToken
,所以可以理解为,JOjbect
实例,就是一种JToken
类型,但是仅是其中的一种。JToken
内部实现了 operator (type)
类型强转,包括常用的一些值类型bool, byte,short, ushort ,uint, ulong, double, TimeSpan, GUID, DateTime, DateTimeOffset
等等 以及引用类型string
的类型强转,也提供了这些类型的反向强转 type operator(JToken)
, 将它们强置转换为JToken
类型。但是它不包括JObject
的强转。通常JToken
转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);
}
}