2016-01-12 3 views
0

Моего Json Ответ:Как преобразовать формат nsstring в формат ответа json в ios?

{ 
"xxx": { 
"y": { 
"id": 1, 
"name": "z" 
}, 
"startday": "2016-01-10", 
"status": "New", 
"total": 1, 
"a": [ 
{ 
"id": 766, 
"b": { 
"id": 3, 
"name": "c" 
}, 
"d": { 
"id": 4 
}, 
"e": { 
"id": 1, 
"name": "f" 
}, 
"g": { 
"id": 8, 
"name": "h" 
}, 
"hours": 1, 
"comments": "", 
"spent_on": "2016-01-10" 
} 
] 
} 
} 

Из этого я создал строку так:

NSString * str = @"{\"xxx\":{\"y\":{\"id\":1,\"name\":\"z\"},\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"a\":[{\"id\":766,\"b\":{\"id\\":3,\\"name\\":\\"c\\"},\\"d\\":{\\"id\\":4},\\"e\\":{\\"id\\":1,\\"name\\":\\"f\\"},\\"g\\":{\\"id\\":8,\\"name\\":\\"h\\"},\\"hours\\":1.0,\\"comments\\":\\"\\",\\"spent_on\\":\\"2016-01-10\\"}]}}"; 

Тогда я отправляю эту величину ниже код:

NSData *objectData = [str dataUsingEncoding:NSUTF8StringEncoding]; 

NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&jsonError]; 

if (jsonError == NULL) 

{ 

msgView [email protected]"error msg null"; 

NSURL *url = [NSURL URLWithString:@"xxx"]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url 
                  cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 

NSData *requestData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding]; 

[request setHTTPMethod:@"POST"]; 

[request setHTTPBody: requestData]; 

} 

Бьет сервер и получает ответ. Аналогично, я получаю все значения, которые пользователь вводит в приложение. Я создаю NSstring с конкатенацией.

NSString* concate = [NSString stringWithFormat:@"%@%@%@%@,%@%@%@,%@,%@%@,%@%,%@,%@,%@%@%@%@%@%@,%@%@,%@%@,%@%@",xx,....]; 

так я получить выходной отклик, как это после СЦЕПИТЬ:

{\"x\":{\"y\":{\"id\":1, 
\"name\":\"a\" 
}, 
\"startday\":\"2016-01-10\" 
, 
\"status\":\"New\" 
,{\"total\":1,\"time_entries\":[{\"id\":766, 
\"b\":{ 
\"id\":8, 
\"name\":\"c\" 
} 
, 
\"u\":{ 
\"id\":22 
} 
,\"d\":{\"id\":1 
\"name\":\"e\" 
}, 
\"l\":{ 
\"id\":8, 
\"name\":\"g\" 
} 
,\"hours\":1,\"comments\":\"\",\"spent_on\":\"2016-01-12\"}]}} 

Так что, если передать это, он бросает error.here я должен сцепить или объединены различные строки с другим approach.or является ли возможности конвертировать строку в формат ответа json. Или любой другой простой способ сделать это task.please предложить мне идеи.

ответ

4

Сначала вам нужно будет конвертировать NSString в NSData, выполнив следующие действия

NSData *data = [concate dataUsingEncoding:NSUTF8StringEncoding]; 

затем просто использовать метод JSONObjectWithData: из NSJSONSerialization, чтобы преобразовать его в формат JSON

NSError *error = nil; 
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 
if(!error) { 
    NSLog(@"%@", json); 
} 
0

Сначала вам нужно преобразовать вы NSString до NSData

NSString * str = @"{\"xxx\":{\"y\":{\"id\":1,\"name\":\"z\"},\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"a\":[{\"id\":766,\"b\":{\"id\\":3,\\"name\\":\\"c\\"},\\"d\\":{\\"id\\":4},\\"e\\":{\\"id\\":1,\\"name\\":\\"f\\"},\\"g\\":{\\"id\\":8,\\"name\\":\\"h\\"},\\"hours\\":1.0,\\"comments\\":\\"\\",\\"spent_on\\":\\"2016-01-10\\"}]}}"; 
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; 

Теперь этот NSData преобразуется в id используя NSJSONSerialization

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

Здесь у вас есть ваши данные в формате JSON

NSLog(@"%@",json); 
Смежные вопросы