gpt4 book ai didi

objective-c - 在 Objective C 中访问 JSON 数据

转载 作者:行者123 更新时间:2023-11-28 23:00:25 25 4
gpt4 key购买 nike

我已经下载了我的 JSON 数据,但我无法访问特定对象。从我的 JSON 数据中,我试图从 variableName = "Elevation of reservoir water surface above datum, ft";

中提取最新的 value

这是我的代码:

- (void)viewWillAppear:(BOOL)animated {
[super viewDidAppear:animated];

NSURL *url = [NSURL URLWithString:@"http://waterservices.usgs.gov/nwis/iv/?sites=02334400&period=P7D&format=json"];

NSData *jsonData = [NSData dataWithContentsOfURL:url];
if (jsonData != nil) {
NSError *error = nil;

id result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error: &error];

if (error == nil)
NSLog(@"%@", result);
}
}

已编辑:打印输出的数据太多,但这是我在 JS 中访问对象的方式。我似乎无法编写在 Obj-C 中执行相同操作的 for 语句:

 var d = JSON.parse(responseText);
for (var i = 0; i < d.value.timeSeries.length; i++) {
if (d.value.timeSeries[i].variable.variableName == 'Elevation of reservoir water surface above datum, ft') {
var result = d.value.timeSeries[i].values[0].value[d.value.timeSeries[i].values[0].value.length - 1];
console.log(result);
}

最佳答案

这很丑陋,但它应该给你一些开始的东西:

NSArray *timeSeries = [JSON valueForKeyPath:@"value.timeSeries"];

[timeSeries enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSString *variableName = [obj valueForKeyPath:@"variable.variableName"];

if ([variableName isEqualToString:@"Elevation of reservoir water surface above datum, ft"]) {

NSArray *values = [obj valueForKey:@"values"];
NSDictionary *value = [values objectAtIndex:0];

values = [value objectForKey:@"value"];
value = [values lastObject];

NSLog(@"%@", [value objectForKey:@"value"]);
}
}];

注意

没有任何类型的验证/范围检查,我将把它留作你做的练习

关于objective-c - 在 Objective C 中访问 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com