我正在尝试将 JObject 中的数组读取到 string[] 中,但我不知道如何操作。
代码非常简单,如下所示,但不起作用。失败并出现错误无法将 JToken 转换为 string[]
JObject Items = jsonSerializer.Deserialize<JObject>(jtr);
string[] brands = null;
brands = (string[])Items.SelectToken("Documents[0].Brands");
当我想读取一个简单的布尔值时,以下方法有效,这样我就知道我在正确的地方。
IsAdmin = (bool)Items.SelectToken("Documents[0].IsAdmin");
Documents[0] 中的 JObject 如下所示
{
"id": "961AA6A6-F372-ZZZZ-1270-ZZZZZ",
"ApiKey": "SDKTest",
"ConsumerName": "SDKTest",
"IsAdmin": false,
"Brands": [
"ZZZ"
],
"IsSdkUser": true
}
如何将该 Brands 数组读入我的 string[] Brands 中?
您可以使用JToken.ToObject<T>() https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JToken_ToObject__1.htm反序列化JToken
任何兼容的 .Net 类型,即
var brands = Items.SelectToken("Documents[0].Brands")?.ToObject<string []>();
铸造操作JToken
例如(bool)Items.SelectToken("Documents[0].IsAdmin")
仅适用于 Newtonsoft 为其提供了显式或隐式转换运算符的原始类型,所有这些都记录在JToken 类型转换 https://www.newtonsoft.com/json/help/html/Operators_T_Newtonsoft_Json_Linq_JToken.htm。由于没有实现这样的转换运算符string[]
,反序列化是必要的。
演示小提琴here https://dotnetfiddle.net/7YdBME.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)