【问题标题】:How to access Json Object which has space in its name?如何访问名称中有空格的 Json 对象?
【发布时间】:2011-09-09 21:15:36
【问题描述】:

在 json 响应下方查找...

{"Object":
          {"PET ANIMALS":[{"id":1,"name":"Dog"},
                          {"id":2,"name":"Cat"}],
           "Wild Animals":[{"id":1,"name":"Tiger"},
                           {"id":2,"name":"Lion"}]
           }
}

在上面提到的响应中,找到“PET ANIMALS”和“Wild ANIMALS”长度的方法是什么......

【问题讨论】:

  • 使用哪种编程语言?

标签: javascript json


【解决方案1】:
var json = /* your JSON object */ ;

json["Object"]["PET ANIMALS"].length // returns the number of array items

使用循环打印数组中的项目数:

var obj = json["Object"];
for (var o in obj) {
    if (obj.hasOwnProperty(o)) {
        alert("'" + o + "' has " + obj[o].length + " items.");
    }
}

【讨论】:

  • 有没有办法使用索引来获取长度。例如json["Object"][0].length 而不是 json["Object"]["PET ANIMALS"].length
  • @Sri 有趣的问题。我不确定,但我认为不会。对象是 无序 属性的集合,因此没有顺序可以根据您获得第一个、第二个、第三个等属性。但你可以使用循环 - 我更新了我的答案。
【解决方案2】:

您没有指定语言,所以这里是 Perl 中的示例:

#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
use JSON::Any;
use File::Slurp;

my $json = File::Slurp::read_file('test.json');
my $j = JSON::Any->new;
my $obj = $j->jsonToObj($json);

say scalar @{$obj->{'Object'}{'PET ANIMALS'}};

# Or you can use a loop

foreach my $key (keys %{$obj->{'Object'}}) {
        printf("%s has %u elements\n", $key, scalar @{$obj->{'Object'}{$key}});
}

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多