【问题标题】:How to count number of JSON elements in an array in C#如何在 C# 中计算数组中 JSON 元素的数量
【发布时间】:2015-07-27 17:48:26
【问题描述】:

我正在使用 instagram API,并且当我通过此模板接收带有任何主题标签的最新媒体时: https://api.instagram.com/v1/tags/{标签}/media/recent 我收到这样的数据:

{
  "pagination": {
    "next_max_tag_id": "any_number",
    "deprecation_warning": "next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
    "next_max_id": "any_number",
    "next_min_id": "any_number",
    "min_tag_id": "any_number",
    "next_url": "https://api.instagram.com/v1/tags/{hashtag}/media/recent?access_token={my_personal_access-token}"
  },
  "meta": {
    "code": 200
  },
  "data": [
    {
      "attribution": null,
      "tags": [
        "any_tag",
        "any_tag1",
        "any_tag2",
        "any_tag3"
      ],
      "type": "image",
      "location": null,
      "comments": {
        "count": 0,
        "data": []
      },
      "filter": "Normal",
      "created_time": "any_number",
      "link": "any_url",
      "likes": {
        "count": 0,
        "data": []
      },
      "images": {
        "low_resolution": {
          "url": "any_url",
          "width": 320,
          "height": 320
        },
        "thumbnail": {
          "url": "any_url",
          "width": 150,
          "height": 150
        },
        "standard_resolution": {
          "url": "any_url",
          "width": 640,
          "height": 640
        }
      },
      "users_in_photo": [],
      "caption": {
        "created_time": "any_number",
        "text": "any_content",
        "from": {
          "username": "any_username",
          "profile_picture": "any_url",
          "id": "any_number",
          "full_name": "any_full_name"
        },
        "id": "any_number"
      },
      "user_has_liked": false,
      "id": "any_number",
      "user": {
        "username": "any_username",
        "profile_picture": "any_url",
        "id": "any_number",
        "full_name": "any_full_name"
      }
    },


等等。 如您所见,对象“数据”是一个数组,进一步我们可以看到对象“标签”,它也是数组。如何在 C# 中检查数组的数字元素数组?我试过这样:

JArray items = (JArray)jsonData["data[0].tags"];
            int length = items.Count;

但它不起作用。我像这样解析 JSON:

dynamic jsonData = JsonConvert.DeserializeObject<dynamic>(JSON_string);

【问题讨论】:

  • 定义“不起作用”
  • 我发现了一个异常:“对象引用未设置为对象的实例。”

标签: c# arrays json json-deserialization


【解决方案1】:
var token = JToken.Parse(str);
var data = token.Value<JArray>("data");
var tags = data[0].Value<JArray>("tags");
var count = tags.Count;

您也可以使用JsonPath

var token = JToken.Parse(str);
var count = token.SelectTokens("$.data[0].tags[*]").Count();

【讨论】:

  • @mati199537 没有问题!我添加了一种更简单的方法,使用 JsonPath
猜你喜欢
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多