我正在尝试从JObject将数组读取为字符串[],但我不知道如何。
该代码非常简单,如下所示,但不起作用。失败失败,无法将JToken转换为字符串[]
JObject Items = jsonSerializer.Deserialize<JObject>(jtr);
string[] brands = null;
brands = (string[])Items.SelectToken("Documents[0].Brands");
以下内容在我想阅读一个简单的bool时会起作用,所以我知道我来对地方了。
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数组读入我的字符串[]品牌中?
您可以使用JToken.ToObject<T>()
将JToken.ToObject<T>()
反序列化为兼容的类型,即
JToken
var brands = Items.SelectToken("Documents[0].Brands")?.ToObject<string []>();
之类的JToken
上的铸造操作仅适用于Newtonsoft提供了显式或隐式转换运算符的原语,所有这些都记录在(bool)Items.SelectToken("Documents[0].IsAdmin")
中。由于没有为JToken Type Conversions实现此类转换运算符,因此必须进行反序列化。
演示小提琴string[]
。
您可以使用here检索所需类型的.Values<T>
的值。
JToken