我正在从Google语音API
获得以下JSON响应 {
"result": [
]
}{
"result": [
{
"alternative": [
{
"transcript": "testing 123"
},
{
"transcript": "listing 123"
},
{
"transcript": "casting 123"
},
{
"transcript": "fasting 123"
},
{
"transcript": "listing 1 2 3"
},
{
"transcript": "Justin 123"
},
{
"transcript": "listening 123"
},
{
"transcript": "listen 123"
}
],
"final": true
}
],
"result_index": 0
}
但是我在解析JSON响应方面遇到了困难。我有以下代码
第一种方法:当我尝试打印
时,我得到一个空结果NSDictionary *results = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableContainers error:nil];
NSDictionary *resultsDictionary = [[results objectForKey:@"result"] objectAtIndex:0];
NSLog(@"result %@", resultsDictionary);
第二种方法:当我尝试打印时获得相同的空结果
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&error];
NSArray* ResultArray = [json objectForKey:@"result"];
NSLog(@"result: %@", ResultArray);
当我尝试通过http://jsonlint.com/验证JSON响应时,我收到以下消息
Parse error on line 5:
...: [ ]}{ "result": [
--------------------^
Expecting 'EOF', '}', ',', ']'
答案 0 :(得分:0)
您的回复不是正确的json格式。首先添加以下行以通过以下行删除额外的空结果字符串:
yourJsonString = [yourJsonString stringByReplacingOccurrencesOfString:@"{\"result\":[]}" withString:@""];
然后,请尝试以下代码:
yourJsonString = [yourJsonString stringByReplacingOccurrencesOfString:@"{\"result\":[]}" withString:@""];
NSData* jsonData = [yourJsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSDictionary *responseObj = [NSJSONSerialization
JSONObjectWithData:jsonData
options:0
error:&error];
if(! error) {
NSArray *responseArray = [responseObj objectForKey:@"result"];
for (NSDictionary *alternative in responseArray) {
NSArray *altArray = [alternative objectForKey:@"alternative"];
for (NSDictionary *transcript in altArray) {
NSLog(@"transcript : %@",[transcript objectForKey:@"transcript"]);
}
}
} else {
NSLog(@"Error in parsing JSON");
}