Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

c# - How to access elements of a JArray (or iterate over them)

I have the following Json gotten from Twitter

     +      token   {[
  {
    "trends": [
      {
        "name": "Croke Park II",
        "url": "http://twitter.com/search?q=%22Croke+Park+II%22",
        "promoted_content": null,
        "query": "%22Croke+Park+II%22",
        "events": null
      },
      {
        "name": "#twiznight",
        "url": "http://twitter.com/search?q=%23twiznight",
        "promoted_content": null,
        "query": "%23twiznight",
        "events": null
      },
      {
        "name": "#Phanhattan",
        "url": "http://twitter.com/search?q=%23Phanhattan",
        "promoted_content": null,
        "query": "%23Phanhattan",
        "events": null
      },
      {
        "name": "#VinB",
        "url": "http://twitter.com/search?q=%23VinB",
        "promoted_content": null,
        "query": "%23VinB",
        "events": null
      },
      {
        "name": "#Boston",
        "url": "http://twitter.com/search?q=%23Boston",
        "promoted_content": null,
        "query": "%23Boston",
        "events": null
      },
      {
        "name": "#rtept",
        "url": "http://twitter.com/search?q=%23rtept",
        "promoted_content": null,
        "query": "%23rtept",
        "events": null
      },
      {
        "name": "Facebook",
        "url": "http://twitter.com/search?q=Facebook",
        "promoted_content": null,
        "query": "Facebook",
        "events": null
      },
      {
        "name": "Ireland",
        "url": "http://twitter.com/search?q=Ireland",
        "promoted_content": null,
        "query": "Ireland",
        "events": null
      },
      {
        "name": "Everton",
        "url": "http://twitter.com/search?q=Everton",
        "promoted_content": null,
        "query": "Everton",
        "events": null
      },
      {
        "name": "Twitter",
        "url": "http://twitter.com/search?q=Twitter",
        "promoted_content": null,
        "query": "Twitter",
        "events": null
      }
    ],
    "as_of": "2013-04-17T13:05:30Z",
    "created_at": "2013-04-17T12:51:41Z",
    "locations": [
      {
        "name": "Dublin",
        "woeid": 560743
      }
    ]
  }
]}  Newtonsoft.Json.Linq.JToken {Newtonsoft.Json.Linq.JArray}

Problem is I can't seem to access any of the elements. I have tried foreach loops and normal for loops and can never seem to access individual elemets it always ends up accessing the whole area.

Any idea how I access the individual elements in this Json JArray?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There is a much simpler solution for that.
Just treat the items of the JArray as JObject.

Let's say we have such array of JSON objects:

JArray jArray = JArray.Parse(@"[
              {
                ""name"": ""Croke Park II"",
                ""url"": ""http://twitter.com/search?q=%22Croke+Park+II%22"",
                ""promoted_content"": null,
                ""query"": ""%22Croke+Park+II%22"",
                ""events"": null
              },
              {
                ""name"": ""Siptu"",
                ""url"": ""http://twitter.com/search?q=Siptu"",
                ""promoted_content"": null,
                ""query"": ""Siptu"",
                ""events"": null
              }]");

To get access each item just do the following:

foreach (JObject item in jArray) // <-- Note that here we used JObject instead of usual JProperty
{
    string name = item.GetValue("name").ToString();
    string url = item.GetValue("url").ToString();
    // ...
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...