0

How can i grab all tokens in a List<String> ?
Here is the json string :

{
    "error": null,
    "jsonrpc": "2.0",
    "id": 0,
    "result": {
        "paginator": null,
        "cat_count": {},
        "last_post_date": 386623075949839,
        "post_list": [
            {
                "hc": false,
                "p2": 4,
                "token": "LnARJZCmt"
            },
            {
                "hc": false,
                "p2": 4,
                "token": "BuD2oIs3N"
            },
            {
                "p2": 4,
                "token": "89NaBsAha",
                "hc": false,
            }
        ],
        "error": 0
    }
}

I am using Newtonsoft.Json
Here is what i tried :

    var obj = JObject.Parse(json);
    string next_search_val = (string)obj["result"]["last_post_date"];
    var tokens = obj["result"]["post_list"]["token"]; > Fix this line for me > I have error here
SilverLight
  • 19,668
  • 65
  • 192
  • 300

1 Answers1

4

I would use

var tokens = JObject.Parse(json)
                .SelectTokens("$..token")
                .Select(x => (string)x)
                .ToList();

EDIT

Same thing without JsonPath

var tokens = JObject.Parse(json)
                .Descendants()
                .OfType<JProperty>()
                .Where(x => x.Name == "token")
                .Select(x => x.Value)
                .ToList();

EDIT 2

Closest thing to your attempt

var tokens = JObject.Parse(json)["result"]["post_list"]
                .Select(x => (string)x["token"])
                .ToList();
L.B
  • 114,136
  • 19
  • 178
  • 224