2015-07-22 3 views
0

Я пытаюсь преобразовать NSMutableDictionary в NSString. Но он вставляет «\» в мою строку. Я использую следующий код для преобразования NSMutableDictionary в NSString.Как преобразовать NSMutableDictionary в NSString?

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:inspectionJson options:0 error:nil]; 
NSLog(@"ns data is %@",jsonData); 
NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSDictionary *dict = @{@"final":json}; 

Здесь

NSMutableDictionary *inspectionJson = {"name":"abc","profession":"IT","images":()} 

Это дает мне выход как

dict = {final = "{\"name\":\"abc\",\"profession\":\"IT\",\"images\":[]}";} 

Моя требуется выход

{final = "{"name":"abc","profession":"IT","images":[]}";} 

Как я могу получить требуемую мощность? Пожалуйста помоги.

Заранее спасибо.

+0

Это называется [экранирующие последовательности в C (из википедии)] (https://en.wikipedia.org/wiki/Escape_sequences_in_C) –

+0

О еще одна вещь, почему вы используете '\ n' для новой строки вместо того, чтобы просто нажимать enter ??? –

+0

проверить мой ответ, я отредактировал. –

ответ

0

" Необходимо убежать в строку, если ее использовать (/) не появится.

Вы можете использовать этот код для проверки:

NSLog(@"%@",dict[@"final"]); 
-1

вы можете использовать два способа

NSString * ДИКТ = [NSString stringWithFormat: @ "% @", aDictionary];

или

вы можете использовать description метод NSMutableDictionary

Надеется, что это помогает.

+0

Если я использую [NSString stringWithFormat: @ "% @", aDictionary] ;, то как я могу преобразовать этот NSString в NSDictionary. Поскольку мне нужен объект NSDictionary. –

+0

dict - объект NSString, но я требую, чтобы dict был объектом NSDictionary –

2
NSDictionary *inspectionJson = @{@"name":@"abc",@"profession":@"IT",@"images":@[]}; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:inspectionJson options:0 error:nil]; 
NSLog(@"ns data is %@",jsonData); 
NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSLog(@"json string:%@", json); 
NSDictionary *dict = @{@"final":json}; 

Если вы запустите этот код, вы можете увидеть фактический json в консоли.

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

Позвольте мне объяснить вам немного больше. Предположим, у вас есть строка

NSString *s1 = @"Make said, he is going to Paris"; 

Вдруг вы узнали эй я недостающие двойные кавычки, так что вы изменили заявление, как показано ниже.

NSString *s1 = @"Mike said, "he is going to Paris""; 

Но внезапно компилятор выдает ошибку на вашем лице: «Эй, вы не можете этого сделать!»

Это потому, что " используется для определения строки, и вы не можете использовать кавычки в пределах одной и той же строки, так же, как вложенные комментарии /* /* */ */

Так что вы будете делать? Вот ваш спаситель Escape Sequence, который позволяет вам использовать специальные символы внутри строки.

Так вот окончательная строка

NSString *s1 = @"Mike said, \"he is going to Paris\""; 
+0

Мне нужна строка unescape в объекте NSDictionary, поскольку я должен отправить эти данные на сервер с использованием AFNetworking –

+0

. Пожалуйста, предложите, как я могу это сделать? –

+0

@NishiBansal: Попробуйте ввести код Индера, добавив 'NSLog (@" final:% @ ", dict [@" final "]);'. Вы должны видеть, что это правильно. –