如何将JToken转换为字符串[]?

问题描述 投票:3回答:2

我正在尝试从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数组读入我的字符串[]品牌中?

c# arrays json json.net
2个回答
2
投票

您可以使用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[]


0
投票

您可以使用here检索所需类型的.Values<T>的值。

JToken
© www.soinside.com 2019 - 2024. All rights reserved.