[
{
"Id": 52,
"Name": "name1",
"author": "john"
},
{
"Id": 53,
"Name": "name2",
"author": "jacob"
},
{
"Id": 54,
"Name": "name3",
"author": "jobin"
}
]
我使用以下代码来获取和解析没有主键的json数组
SBJsonParser *parser1 = [[SBJsonParser alloc] init];
NSURLRequest *request1 = [NSURLRequest requestWithURL:[NSURL URLWithString:str2]];
// Perform request and get JSON back as a NSData object
NSData *response1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil];
NSError *error;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:response1 options:kNilOptions error:&error];
但我得到以下异常
data parameter is nil
此代码发生此异常
NSData *response1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil];
如何迭代id值?
答案 0 :(得分:1)
这里有一系列JSON文件,所以我会:
NSArray *jsonArray = ; //your JSON
for (NSDictionary *dict in jsonArray) {
NSInteger number = [dict[@"Id"] intValue];
NSString *name = dict[@"Name"];
NSString *author = dict[@"author"];
}
答案 1 :(得分:0)
您给出的是完美的,它正在为我工作尝试检查您的API 并且您没有使用SBJson也尝试打印NSLog("%@",jsonArray);
答案 2 :(得分:0)
sendSynchronousRequest的返回值为void。所以数据参数为零是有意义的。
+ (void)sendAsynchronousRequest:(NSURLRequest *)request
queue:(NSOperationQueue *)queue
completionHandler:(void (^)(NSURLResponse *response,
NSData *data,
NSError *connectionError))handler
您希望的数据值在块中提供。这就是你想要提取NSArray并用它做些什么的地方。
在我目前的项目中,我没有使用synchronousRequest,而是做类似的事情。也许这有助于你。
NSError *error;
// Read the given JSON file from the server
NSData *filedata = [NSData dataWithContentsOfURL:url options:kNilOptions error:&error];
if (filedata)
{
// Read the returned NSData from the server to an NSDictionary object
// Essentially this is the bookstore in NSDictionary format.
NSArray *bookStore = [NSJSONSerialization JSONObjectWithData:filedata options:kNilOptions error:&error];
}