2014-01-17 75 views
1

我得到響應:錯誤雖然解析JSON字符串響應隨目標C

{"response":{"id":"R1","cmd":[{"batchSize":50,"startRow":0,"name":"doLogin","result":"OK","attributes":[{"name":"businessName","type":"String"},{"name":"objId","type":"Long"},{"name":"businessType","type":"String"},{"name":"firstName","type":"String"},{"name":"businessName","type":"String"},{"name":"objId","type":"Long"},{"name":"businessType","type":"String"},{"name":"firstName","type":"String"}],"records":[["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"],["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"],["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"],["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"]]}]}}

現在的問題是,....... 的NSDictionary * JSON = [NSJSONSerialization JSONObjectWithData:(NSData的*)obj選項:kNilOptions錯誤:&錯誤];

NSDictionary *first = [json objectForKey:@"response"]; 
NSArray *second = [first objectForKey:@"cmd"]; 
NSArray *attribute_array = [[second objectAtIndex:0] objectForKey:@"result"]; 
NSLog(@"Resultttttttttt=%@",attribute_array); 

//Value of Result 
NSString *resultVal = [NSString stringWithFormat:@"%@",attribute_array]; 

NSArray *record_array = [[second objectAtIndex:0] objectForKey:@"records"]; 

NSLog(@"Resultttttttttt Nisarg = %@",[[record_array objectAtIndex:0] objectForKey:@"firstName\\"]); 

在當我試圖爲重點的firstName獲取價值它給錯誤,因爲結構是這樣「名字\」,而不是關鍵「名字」的所以任何的最後一句話建議與「名字\」重點解析字符串....

+0

顯示響應反序列化後的JSON字典。 – chandu

回答

0

爲什麼逃逸?:報價

[["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"],["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"],["businessName\":\"Palo Alto Egg - Distributor","objId\":\"200","businessType\":\"D","firstName\":\"System"] 

它必須是:

[["businessName":"Palo Alto Egg - Distributor","objId":"200","businessType":"D","firstName":"System"],["businessName":"Palo Alto Egg - Distributor","objId":"200","businessType":"D","firstName":"System"],["businessName":"Palo Alto Egg - Distributor","objId":"200","businessType":"D","firstName":"System"] 
1

你的JSON很好地形成,但每個記錄,而不是一本字典的字符串列表,即你有

[ 
    "businessName\":\"Palo Alto Egg - Distributor", 
    "objId\":\"200", 
    "businessType\":\"D", 
    "firstName\":\"System" 
], 

,而不是

{ 
    "businessName": "Palo Alto Egg - Distributor", 
    "objId": "200", 
    "businessType": "D", 
    "firstName": "System" 
}, 

因此[record_array objectAtIndex:0]是一個數組,而不是字典。

如果您可以控制JSON輸出,則應該檢查代碼並使其返回正確的格式。 如果你不能改變的輸出,你不想做複雜的字符串操作的原始JSON數據,你最好的選擇是:

NSString *firstName = NULL; 

for (NSString *line in record) { 
    if ([line hasPrefix:@"firstName"]) { 
     firstName = [[line componentsSeparatedByString:@"\":\""] objectAtIndex:1]; 
    } 
} 

NSLog(@"%@", firstName);