我有一个从JSON文件创建的NSArray
如果我只是将阵列打印到控制台,我会得到以下输出:
Click me
档案的第一部分:
{
result = {
"attribute_controlled_attached_particles" = (
{
"attach_to_rootbone" = 0;
id = 1;
name = "Partikel 1";
system = "burningplayer_red";
},
{
"attach_to_rootbone" = 0;
id = 2;
name = "Fliegende Teile";
system = "burningplayer_flyingbits";
},
{
"attach_to_rootbone" = 0;
attachment = muzzle1;
id = 3;
name = "Nemesis-Explosion";
system = "particle_nemesis_burst_blue";
},
{
"attach_to_rootbone" = 0;
id = 4;
name = "Community-Glitzer";
system = "community_sparkle";
},
{
"attach_to_rootbone" = 0;
attachment = halopoint1;
id = 5;
name = Heiligenschein;
system = halopoint;
},
{
"attach_to_rootbone" = 0;
id = 6;
name = "Gr\U00fcnes Konfetti";
system = "superrare_confetti_green";
},
{
"attach_to_rootbone" = 0;
id = 7;
name = "Lila Konfetti";
system = "superrare_confetti_purple";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 8;
name = "Spukende Geister";
system = "superrare_ghosts";
},
{
"attach_to_rootbone" = 1;
id = 9;
name = "Gr\U00fcne Energieladung";
system = "superrare_greenenergy";
},
{
"attach_to_rootbone" = 1;
id = 10;
name = "Lila Energieladung";
system = "superrare_purpleenergy";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 11;
name = "Kreisendes TF-Logo";
system = "superrare_circling_tf";
},
{
"attach_to_rootbone" = 1;
id = 12;
name = Fliegenschwarm;
system = "superrare_flies";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 13;
name = "Brennende Flammen";
system = "superrare_burning1";
},
{
"attach_to_rootbone" = 1;
attachment = unusual;
id = 14;
name = "Sengende Flammen";
system = "superrare_burning2";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 15;
name = "Gl\U00fchendes Plasma";
system = "superrare_plasma1";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 16;
name = "Lebendiges Plasma";
system = "superrare_plasma2";
},
{
"attach_to_rootbone" = 1;
id = 17;
name = Sonnenstrahlen;
system = "superrare_beams1";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 18;
name = "Kreisendes Friedenszeichen";
system = "superrare_circling_peacesign";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 19;
name = "Kreisendes Herz";
system = "superrare_circling_heart";
},
{
"attach_to_rootbone" = 1;
id = 20;
name = "Karten-Briefmarken";
system = "stamp_spin";
},
{
"attach_to_rootbone" = 0;
attachment = "cig_drg_smoke";
id = 28;
name = "Eleganter Rauch";
system = "drg_pipe_smoke";
},
{
"attach_to_rootbone" = 1;
id = 29;
name = "St\U00fcrmischer Sturm";
system = "unusual_storm";
},
{
"attach_to_rootbone" = 1;
id = 30;
name = "Eisiger Sturm";
system = "unusual_blizzard";
},
{
"attach_to_rootbone" = 1;
id = 31;
name = "Muttern & Bolzen";
system = "unusual_orbit_nutsnbolts";
},
{
"attach_to_rootbone" = 1;
id = 32;
name = "Kreisende Planeten";
system = "unusual_orbit_planets";
},
{
"attach_to_rootbone" = 1;
id = 33;
name = "Kreisendes Feuer";
system = "unusual_orbit_fire";
},
{
"attach_to_rootbone" = 1;
id = 34;
name = Blubbern;
system = "unusual_bubbles";
},
{
"attach_to_rootbone" = 1;
id = 35;
name = Rauchen;
system = "unusual_smoking";
},
{
"attach_to_rootbone" = 1;
id = 36;
name = Dampfen;
system = "unusual_steaming";
},
{
"attach_to_rootbone" = 1;
id = 37;
name = "Brennende Laterne";
system = "unusual_orbit_jack_flaming";
},
{
"attach_to_rootbone" = 1;
id = 38;
name = "Bew\U00f6lkter Mond";
system = "unusual_fullmoon_cloudy";
},
{
"attach_to_rootbone" = 1;
id = 39;
name = "Blubbernder Kessel";
system = "unusual_bubbles_green";
},
{
"attach_to_rootbone" = 1;
id = 40;
name = "Schauriges, kreisendes Feuer";
system = "unusual_orbit_fire_dark";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 43;
name = Messersturm;
system = "unusual_storm_knives";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 44;
name = "Nebliger Sch\U00e4del";
system = "unusual_skull_misty";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 45;
name = Herbstmond;
system = "unusual_fullmoon_cloudy_green";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 46;
name = "Es ist ein Geheimnis f\U00fcr jeden";
system = "unusual_fullmoon_cloudy_secret";
},
{
"attach_to_rootbone" = 1;
attachment = muzzle;
id = 47;
name = "St\U00fcrmische 13. Stunde";
system = "unusual_storm_spooky";
}
);
attributes = (
{
"attribute_class" = "mult_dmg";
defindex = 1;
"description_format" = "value_is_percentage";
"description_string" = "%s1%\U00a0geringerer Schaden";
"effect_type" = negative;
hidden = 0;
"max_value" = "0.85";
"min_value" = "0.95";
name = "damage penalty";
"stored_as_integer" = 0;
},
{
"attribute_class" = "mult_dmg";
defindex = 2;
"description_format" = "value_is_percentage";
"description_string" = "+%s1%\U00a0Schadensbonus";
"effect_type" = positive;
hidden = 0;
"max_value" = "1.1";
"min_value" = "1.05";
name = "damage bonus";
"stored_as_integer" = 0;
},
{
"attribute_class" = "mult_clipsize";
defindex = 3;
"description_format" = "value_is_percentage";
"description_string" = "%s1%\U00a0Magazingr\U00f6\U00dfe";
"effect_type" = negative;
hidden = 0;
"max_value" = "0.75";
"min_value" = "0.9";
name = "clip size penalty";
"stored_as_integer" = 0;
},
{
"attribute_class" = "mult_clipsize";
defindex = 4;
"description_format" = "value_is_percentage";
"description_string" = "+%s1%\U00a0Magazingr\U00f6\U00dfe";
"effect_type" = positive;
hidden = 0;
"max_value" = "1.1";
"min_value" = "1.05";
name = "clip size bonus";
"stored_as_integer" = 0;
},
{
"attribute_class" = "mult_postfiredelay";
defindex = 5;
"description_format" = "value_is_inverted_percentage";
"description_string" = "%s1%\U00a0niedrigere Schussfrequenz";
"effect_type" = negative;
hidden = 0;
"max_value" = "1.25";
"min_value" = "1.05";
name = "fire rate penalty";
"stored_as_integer" = 0;
},
{
"attribute_class" = "mult_postfiredelay";
defindex = 6;
"description_format" = "value_is_inverted_percentage";
"description_string" = "+%s1%\U00a0h\U00f6here Schussfrequenz";
"effect_type" = positive;
hidden = 0;
"max_value" = "0.9";
"min_value" = "0.95";
name = "fire rate bonus";
"stored_as_integer" = 0;
},
{
"attribute_class" = "mult_medigun_healrate";
defindex = 7;
"description_format" = "value_is_percentage";
"description_string" = "%s1%\U00a0Heilungsrate";
"effect_type" = negative;
hidden = 0;
"max_value" = "0.8";
"min_value" = "0.95";
name = "heal rate penalty";
"stored_as_integer" = 0;
},
{
"attribute_class" = "mult_medigun_healrate";
defindex = 8;
"description_format" = "value_is_percentage";
"description_string" = "+%s1%\U00a0Heilungsrate";
"effect_type" = positive;
hidden = 0;
"max_value" = "1.15";
"min_value" = "1.05";
name = "heal rate bonus";
"stored_as_integer" = 0;
},
我的问题是:如何在索引处获取项目的名称?
我试过
[[[[news objectAtIndex:0]objectForKey:@"items"]objectAtIndex:2] objectForKey:@"name"];
新闻是包含数据的数组!
希望你能提供帮助 添
答案 0 :(得分:0)
你似乎有一个由几个字典数组组成的字典。我想你想要这样的东西......(编辑:在评论中提到,它取决于你需要从哪个字典数组中获取名称,因为在结果中似乎有几个可供选择)。
NSArray *array = [resultDictionary objectForKey:@"attribute_controlled_attached_particles"];
for (NSDictionary *aDictionary in array){
NSString *name = [aDictionary objectForKey:@"name"];
// do what you want with the string...
// could be useful if you for instance need to make an array of all the names
}
当然还是:
NSString *someString = [[array objectAtIndex:3] objectForKey:@"name"];
答案 1 :(得分:0)
你有一个包含另一个字典的字典(不是一个聪明的主意),所以你应该使用objectForKey:selector来获取它里面的字典。现在,如果你能够获得字典的键值,你就不会遇到N次问题。
[]运算符允许您访问数组/字典的值,它的作用类似于objectAtIndex:/ valueForKey :.以下是如何做到这一点:
NSDictionary* result= json[@"result"];
NSArray* acabArray= result[@"attribute_controlled_attached_particles"];
for(NSDictionary* acabDict in acabArray)
{
NSNumber* num= acabDict[@"attach_to_rootbone"];
NSString* name= acabDict[@"name"];
// Obtain also the other key-values in a similar way
// Do what you want with these values, I suggest to build a custom
// object to hold all these values, and put every object in a mutable array.
}
答案 2 :(得分:0)
您的NSDictionary
包含NSDictionary
(键入"结果"),其中包含NSArray
(键入" attribute_controlled_attached_particles")。要获得这个包含数组,您需要这样做:
NSArray *resultArray = [[jsonDictionary objectForKey:@"result"] objectForKey:@"attribute_controlled_attached_particles"];
在resultArray
内,您有一个有序的词典列表,代表新闻项目。所以,要获得"名称"第一个索引的字符串,执行
NSDictionary *itemDictionary = [resultArray objectAtIndex:0];
NSString *name = [itemDictionary objectForKey:@"name"];
要枚举所有项目,您需要遍历resultArray。