2013-10-10 67 views
0

我想格式化使用NSJSONSerialization以下格式的JSON字符串:如何構建特定格式的JSON字符串?

{ 
"data":{"userName":"rrullo","password":"rrullo!"}, 
"meta":{"appId":"S3B9CU4R2B9JTXV9254Y","appVersion":"2.1.0","serverVersion":"1.1.0","platform":"iOS","deviceToken":"1234","tm_session_id":"BB00000"} 
} 

但我不知道如何來實現,雖然這種格式。有人可以幫助我嗎......

+0

1)瞭解json.org上的JSON語法。 2)創建外部字典來表示最外面的JSON「對象」。 3)創建兩個內部詞典並將它們插入到外部詞典中。 4)使用NSJSONSerialization進行序列化。 –

回答

2

首先用你的'meta'和'data'信息填充兩個NSDictionaries。然後添加這些入主的NSDictionary,然後序列化使用NSJsonSerialization

NSDictionary * metaDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"appId", @"S3B9CU4R2B9JTXV9254Y", @"appVersion", @"2.1.0", @"serverVersion", @"1.1.0", @"platform", @"iOS",..., nil]; 

NSDictionary * dataDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"userName", @"rrullo", @"password", @"rrullo!", nil]; 

NSDictionary * mainDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"data", dataDict, @"meta", metaDict, nil]; 

現在你可以使用NSJsonSerialization到mainDict轉換成的NSString

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:mainDict 
                options:NSJSONWritingPrettyPrinted 
                error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

希望這有助於

+0

非常感謝...這有助於很多... –

+0

@RashmiRanjanmallick如果它適合您,請將此標記爲正確答案。 – onetwopunch

2
NSDictionary dictData = @{ @"UserName":@"rrullo", @"password":@"rrullo!"}; 
NSDictionary dictMeta = @{ @"appId":@"S3B9CU4R2B9JTXV9254Y", etc}; 
NSDictionary dictJSON = @{ @"data":dictData, @"meta":dictMeta }; 

NSError *error = nil; 
NSData *dataJSON = [NSJSONSerialization dataWithJSONObject:dictJSON 
                options:NSJSONWritingPrettyPrinted 
                error:&error]; 
if (!error) { 
    NSString *jsonString = [[NSString alloc] initWithData:dataJSON encoding:NSUTF8StringEncoding]; 
} else { 
    NSLog(@"Error: %@", error); 
} 
+0

@RashmiRanjanmallick - 如果你不明白代碼的作用,不要感謝他。當人們試圖用其他來源的複製/編輯來做JSON的時候,他們幾乎總是很快就會失控。 –