这是我的json回复:
{
"projects": [
{
"id": 8,
"name": "Andriod APP",
"identifier": "andriod-app",
"description": "",
"status": 1,
"is_public": true,
"created_on": "2015-06-29T11:54:23Z",
"updated_on": "2015-06-29T11:54:23Z"
},
],
"total_count": 8,
"offset": 0,
"limit": 25
}
1.我创建了下拉列表并仅在下拉列表中显示项目名称(要求)。
2.在表格视图中选择项目名称也必须得到项目ID。通过这段代码来实现:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
projdict = [[NSMutableDictionary alloc]init];
[projdict setObject:[self.itemArray objectAtIndex:indexPath.row] forKey:@"data"];
数据内容为:
{
data ={
"created_on" = "2015-06-24T11:01:11Z";
description = "";
id = 3;
identifier = fotonation;
"is_public" = 1;
name = Fotonation;
status = 1;
"updated_on" = "2015-06-24T11:01:11Z";
};
}
从这个回复中我得到了所选项目名称的项目ID。
projid = [[projdict objectForKey:@"data"] objectForKey:@"id"];
然后我创建了字典:
proj_id = @"id";
proj_name = @"name";
test = [NSDictionary dictionaryWithObjectsAndKeys:projid,proj_id, projname,proj_name, nil];
我希望得到json格式:
{
“project”:{
“id”:”3”,
”name”:”fotonation
}
因为我这样做了:
NSDictionary * test1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Project",test, nil];
test1的响应是:
{
{
id = 3;
name = Fotonation;
} = Project;
}
NSError * error;
NSData * data = [NSJSONSerialization dataWithJSONObject:test1 options:NSJSONWritingPrettyPrinted error:&error];
关于这个我在nsdata上收到错误它显示错误:
json字典中的无效(非字符串)键。
3.我保留了didrowselect中的所有值是否可以将值传递给任何其他方法或全局?
4.在ios中有任何关于JSON格式和Json请求的文章或教程吗?
答案 0 :(得分:0)
在我看来,initWithObjectsAndKeys
打电话给你的对象和按键已被颠倒了:
NSDictionary *test1 =
[[NSDictionary alloc] initWithObjectsAndKeys:
@"Project",test, nil];
在方法initWithObjectsAndKeys
中,首先是对象,然后是密钥,这会让人感到困惑。
你传递@“Project”作为对象,test
(字典)作为键。
如果您打算使用方法initWithObjectsAndKeys
,那么您需要
NSDictionary *test1 =
[[NSDictionary alloc] initWithObjectsAndKeys:
test, @"Project", nil];
但是,我建议使用现代对象文字语法,如下所示:
NSDictionary *test1 = @{@"project": test};
它更紧凑,更易于阅读。
答案 1 :(得分:0)
试试这个
NSDictionary * test1 = @{@"projects": @[@{@"id": @8,
@"name": @"Andriod APP",
@"identifier": @"andriod-app",
@"description": @"",
@"status": @1,
@"is_public": @1,
@"created_on": @"2015-06-29T11:54:23Z",
@"updated_on": @"2015-06-29T11:54:23Z"
}],
@"total_count": @8,
@"offset": @0,
@"limit": @25
};
NSError *error = nil;
NSData * data = [NSJSONSerialization dataWithJSONObject:test1 options:NSJSONWritingPrettyPrinted error:&error];