2015-10-04 5 views
1

Преобразование NSString в соответствующий формат JSON ..Преобразование NSString в нужном формате JSON

NSString *input_json = [NSString stringWithFormat:@"{\"id\":\"%@\",\"seconds\":\"%d\",\"buttons\": \"%@\"}", reco_id, interactionTime, json_Buttons]; 

Здесь json_Button в формате JSON, преобразованного из NSDictionary ..

Мой результат input_json является:

 
{"id":"119","seconds":"10","buttons": "{ 
    "update" : "2", 
    "scan" : "4" 
}"} 

Это не в надлежащем формате JSON. ключевые кнопки содержат «{}« Я хочу удалить эти кавычки.

Ожидаемый результат:

 
{ 
    "id": "119", 
    "seconds": "10", 
    "buttons": { 
     "update": "2", 
     "scan": "4" 
    } 
} 

ответ

2

Вы собираетесь об этом все неправильно. Сначала создайте NSDictionary, который содержит все данные, которые вы хотите преобразовать в JSON. Затем используйте NSJSONSerialization, чтобы правильно преобразовать словарь в JSON.

Что-то, как это будет работать:

NSDictionary *dictionary = @{ @"id" : reco_id, @"seconds" : @(interactionTime), @"buttons" : json_Buttons }; 
NSError *error = nil; 
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error]; 
if (data) { 
    NSString *jsonString = [[NSString alloc] intWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"JSON: %@", jsonString); 
} else { 
    NSLog(@"Unable to convert dictionary to JSON: %@", error); 
} 
+0

Привет, rmaddy .. Спасибо за ваш ответ .. –

+0

Привет, rmaddy я получаю действительный json .., но мой сервер не принимает ... ваше предложение дало такой результат. JSON: { "id": "119" , "seconds": 10, "buttons": "{\ n \" update \ ": \" 2 \ ", \ n \" scan \ ": \" 4 \ "\ n}" }, но мой сервер ожидает, что «кнопки»: {«update»: «2», «scan»: «4»}, как это ... означает, что значение клавиши клавиши не должно находиться внутри «» .. может помочь мне .. –

+0

Это целая отдельная проблема. Вы должны задать новый вопрос по этому вопросу. Обязательно укажите соответствующие данные. – rmaddy

0

Это плохая идея, чтобы попытаться построить JSON строки вручную. Используйте класс NSJSONSerialization. Это облегчает задачу. Создайте словарь, затем позвоните dataWithJSONObject:options:error:.

Если вы используете опции: NSJSONWritingPrettyPrinted, он вставляет разрывы строк и пробелы, что делает JSON более удобочитаемым.

Используя эту функцию, вы получаете правильно отформатированный JSON каждый раз, и он гибкий, потому что если вы отправляете ему другой словарь, вы получаете разные JSON.

+0

Привет, спасибо за ваш ответ ... Привет, вот мое значение json_Buttons ...{"update": "2", "scan": "4"}, когда я поместил все мои значения в nsdictionary, он вставляет словарь таким образом :,, {buttons = "{\ n \" update \ ": \ "2 \", \ n \ "scan \": \ "4 \" \ n} "; id = 119; секунды = 10; } Я не хочу, чтобы значения моих кнопок находились внутри кавычек «{}« как строка .. –

+0

Так что отредактируйте свой вопрос, чтобы показать код, который генерирует этот JSON. –

Смежные вопросы