将JToken列表转换为值之一的列表

时间:2019-06-08 05:34:46

标签: c# linq json.net

我有一个json JTokens列表:

List<JToken> subjectresults = jObj[jp]["subjects"].Children().ToList();

请注意,我的jp是var jp = jObj.Properties().First().Name;,因为名称是动态的。

每个令牌都包含另外两个项目,即URL和名称。
我想从此jtokens列表中获取仅包含名称值的字符串列表。

因此:

[0]: {{
  "url": "https://openlibrary.org/subjects/science",
  "name": "Science"
}}

    [1]: {{
  "url": "https://openlibrary.org/subjects/in_library",
  "name": "In library"
}}

成为:

{"Science", "In library"}

我似乎无法弄清楚语法。 或者,如何跳过令牌并直接进入列表。 我没有强烈键入此内容,因为parent属性具有动态名称,并且我只需要几个字段。

1 个答案:

答案 0 :(得分:0)

我想主题-属性是 Array

var jObj = JObject.Parse(json);

var jp = jObj.Properties().First().Name;
var subjectresults = jObj[jp]["subjects"]
    .Children()
    .Select(v => v["name"].Value<string>())
    .ToArray();

/*
subjectresults
{string[2]}
[0] [string]:"Science"
[1] [string]:"In library"
*/

源json:

var json = @"{
        ""name"": {
            ""subjects"": [
                {
                    ""url"": ""https://openlibrary.org/subjects/science"",
                    ""name"": ""Science""
                },
                {
                    ""url"": ""https://openlibrary.org/subjects/in_library"",
                    ""name"": ""In library""
                }
            ]
        }                
    }";