2016-04-27 3 views
1

У меня есть JSON Требование к формату что-то вроде этого.Создайте формат JSON, используя NSString в качестве ключа и значения

{ 
"first_name" : "XYZ", 
"last_name" : "ABC" 
} 

У меня есть значения в NSString.

NSString strFName = @"XYZ"; 
NSString strLName = @"ABC"; 
NSString strKeyFN = @"first_name"; 
NSString strKeyLN = @"last_name"; 

И я использую NSMutableDictionary

NSMutableDictionary* dict = [[NSMutableDictionary alloc]init]; 
[dict setObject:strFName forKey:strKeyFN]; 
[dict setObject:strLName forKey:strKeyLN]; 

затем выход

{ 
first_name = XYZ, 
last_name = ABC 
} 

Так что я не хочу "=" разделения ключевых & значений вместо этого я хочу ":" отделить ключ и значения

Я отправил большую часть stack overflow questions но не помогли получить «=» только на выходе

Так что пожалуйста, помогите?

+0

HTTP : //stackoverflow.com/questions/12299965/convert ing-an-array-in-json-array-in-ios –

ответ

1

Вот ваш ответ:

NSString *strFName = @"XYZ"; 
NSString *strLName = @"ABC"; 
NSInteger number = 15; 

NSString *strKeyFN = @"first_name"; 
NSString *strKeyLN = @"last_name"; 
NSString *numValue = @"Number"; 

NSMutableDictionary *dic = [[NSMutableDictionary alloc]init]; 

[dic setObject:strFName forKey:strKeyFN]; 
[dic setObject:strLName forKey:strKeyLN]; 
[dic setObject:[NSNumber numberWithInt:number] forKey:numValue]; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[NSArray arrayWithObject:dic] options:NSJSONWritingPrettyPrinted error:nil]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSLog(@"JSON %@",jsonString); 

See image

+0

@ivaran спасибо, но если я хочу пропустить номер из двойных кавычек, значит, что мне нужно делать? – Ganesh

+0

@Ganesh ответ обновлен. с числовым значением – ivarun

+0

Да, это действительно полезно! Большое спасибо! – Ganesh

0

Вы пишете этот код после того, как ваш NSDictionary

NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error]; 
    NSString *jsonstr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
+0

Да, это действительно полезно, но он также добавляет двойные кавычки к числу , поэтому я не хочу использовать для этого двойные кавычки, чем то, что мне нужно сделать? что-то вроде этого { «Номер»: 7 } – Ganesh

0

попробовать это: -

NSString *cleanedString1 =[strFName stringByReplacingOccurrencesOfString:@"/"" withString:@""]; 
NSString *cleanedString2 =[strLName stringByReplacingOccurrencesOfString:@"/"" withString:@""]; 

NSDictionary *Dict = [NSDictionary dictionaryWithObjectsAndKeys: 
           cleanedString1, strKeyFN, 
           cleanedString2, strKeyLN,nil]; 

NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:Dict options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding]; 
NSLog(@"jsonData as string:\n%@", jsonString); 
+0

Да, это действительно полезно спасибо, но это добавляет двойные кавычки числа, поэтому я не хочу двойные кавычки для него, чем то, что я должен делать ? что-то вроде этого {"Number": 7} – Ganesh

+0

попробуйте мой обновленный ответ –

+0

, если вы не видите этот пример http://stackoverflow.com/questions/26817932/i-need-json-string-without-double-quotes -in-keys-in-ios –

0
NSString *strFName = @"XYZ"; 
NSString *strLName = @"ABC"; 
NSString *strKeyFN = @"first_name"; 
NSString *strKeyLN = @"last_name"; 
NSDictionary *ictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
         strKeyFN, strFName,strKeyLN, strLName,nil]; 

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSLog(@"dictionary as string:%@", jsonString); 
0

вы должны преобразовать NSMutableDictionary в NSData

затем преобразовать NSData Into json струне вы хотите

NSString *strFName = @"XYZ"; 
NSString *strLName = @"ABC"; 
NSString *strKeyFN = @"first_name"; 
NSString *strKeyLN = @"last_name"; 
NSMutableDictionary* dict = [[NSMutableDictionary alloc]init]; 
[dict setObject:strFName forKey:strKeyFN]; 
[dict setObject:strLName forKey:strKeyLN]; 

NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil]; 

NSString *jasonString= [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
+0

Да, это действительно полезно, но позволяет сказать, что у меня есть номер, и мне не нужны двойные кавычки для него, чем то, что я могу сделать? – Ganesh

+0

в ключе NSDictionary всегда String Но его значение может быть числом или строкой. если вы используете значение как число, вы не получаете двойные кавычки –

0
NSString *strFName = @"ABC"; 
NSString *strLName = @"XYZ"; 

NSString *strKeyFN = @"last_name"; 
NSString *strKeyLN = @"first_name"; 

NSMutableDictionary *dict = [[NSMutableDictionary alloc]init]; 

[dict setObject:strFName forKey:strKeyFN]; 
[dict setObject:strLName forKey:strKeyLN]; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[NSArray arrayWithObject:dict] options:NSJSONWritingPrettyPrinted error:nil]; 
NSString *jsonStrng = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSLog(@"Your required JSON is %@",jsonStrng); 
0

это очень надежный код для достижения вам цели

NSDictionary *userDic = @{strKeyFN:strFName,strKeyLN:strLName};