Mat*_*han 16 c# arrays json json.net
我正在尝试将 JObject 中的数组读取到 string[] 中,但我不知道怎么做。
代码非常简单,如下所示,但不起作用。Fails with error cannot convert JToken to string[]
JObject Items = jsonSerializer.Deserialize<JObject>(jtr);
string[] brands = null;
brands = (string[])Items.SelectToken("Documents[0].Brands");
Run Code Online (Sandbox Code Playgroud)
当我想阅读一个简单的 bool 时,以下内容有效,所以我知道我在正确的地方。
IsAdmin = (bool)Items.SelectToken("Documents[0].IsAdmin");
Run Code Online (Sandbox Code Playgroud)
Documents[0] 中的 JObject 如下所示
{
"id": "961AA6A6-F372-ZZZZ-1270-ZZZZZ",
"ApiKey": "SDKTest",
"ConsumerName": "SDKTest",
"IsAdmin": false,
"Brands": [
"ZZZ"
],
"IsSdkUser": true
}
Run Code Online (Sandbox Code Playgroud)
如何将 Brands 数组读入我的 string[] 品牌中?
dbc*_*dbc 19
您可以使用JToken.ToObject<T>()
将 a 反序列化为JToken
任何兼容的 .Net 类型,即
var brands = Items.SelectToken("Documents[0].Brands")?.ToObject<string []>();
Run Code Online (Sandbox Code Playgroud)
对JToken
诸如此类的强制(bool)Items.SelectToken("Documents[0].IsAdmin")
转换操作仅适用于 Newtonsoft 为其提供了显式或隐式转换运算符的基本类型,所有这些都记录在JToken 类型转换中。由于没有为 实现这样的转换运算符string[]
,反序列化是必要的。
演示小提琴在这里。