我正在尝试从JObject将数组读取为string [],但我不知道如何做。

该代码非常简单,如下所示,但不起作用。失败失败,无法将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数组读入我的string []品牌中?

最佳答案

您可以使用JToken.ToObject<T>()JToken反序列化为任何兼容的.Net类型,即

var brands = Items.SelectToken("Documents[0].Brands")?.ToObject<string []>();


JToken上进行强制转换操作(例如(bool)Items.SelectToken("Documents[0].IsAdmin"))仅适用于Newtonsoft提供了显式或隐式转换运算符的原始类型,所有这些类型均记录在JToken Type Conversions中。由于没有为string[]实现此类转换运算符,因此必须进行反序列化。

演示小提琴here

关于c# - 如何将JToken转换为string []?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59729632/

10-17 00:21