2013-02-02 67 views
1

我搜索了很多,我發現了很多答案,但沒有找到我需要的具體答案 - 這非常簡單。將NSStrings轉換爲Json

我想拿2 不同NSString表示用戶類型,並從它們創建一個json發送到服務器。

我寫了這個:

-(id)stringToJason:(NSString*)stringData 
{ 
    NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 
    id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
    return json; 
} 

但有一點我不明白。這將返回1個nsstring作爲json。

我將如何採取2個不同NSStrings,並從他們一起創建的JSON? 比方說:userName:me(當每一個都是來自文本字段)

JSON應該是這樣的:

"Username": "me", 
    "Firstname": "r", 
    "Lastname": "k", 
+1

你能發表一個你想如何看看生成的JSON的例子嗎? – Kitsune

+0

@Kitsune查看編輯。謝謝 。 – bilanbila

回答

5

如果你想產生JSON看起來像:

{ 
    "Username":"me", 
    "Firstname":"r", 
    "Lastname":"k" 
} 

其中rk是取自文本字段的值,您可以按照以下方法編寫方法:

-(NSData*)jsonFromFirstName:(NSString*)firstName andLastName:(NSString*)lastName 
{ 
    NSDictionary* dic = @{@"Username" : @"me", @"Firstname" : firstName, @"Lastname" : lastName}; 
    // In production code, _check_for_errors! 
    NSData* json = [NSJSONSerialization dataWithJSONObject:dic options:0 error:nil]; 
    return json; 
} 

您可以調用此方法,將rfirstName)和klastName)值傳遞給它。它會構建一個具有所需JSON結構的字典,並具有所需的值。然後,您可以使用NSJSONSerialization-dataWithJSONObject:options:error選擇器將字典轉換爲JSON數據對象(存儲在NSData對象中)。然後您將數據發送到服務器!

在方法的第一行創建的字典可以根據需要進行擴展,甚至可以傳入非字符串(例如數字,數組或甚至其他字典!)。

+0

非常感謝。這現在很清楚。但我在想如何做出一般性的東西,我可以每次發送不同數量的參數時發送它? – bilanbila

+0

我應該使用nsstrings數組並將其發送到函數? – bilanbila

+0

@ user1994291這取決於您希望生成的JSON的外觀。您可以將它傳遞給'NSStrings'的NSArray,然後將該數組直接包含在字典中(例如:'@ {@「Aliases」:arrayOfAliases'')。我建議你將玩家的各種數據結構傳遞給'-dataWithJSONObject:options:error'和'NSLog'來生成字符串數據,以查看事情是如何發生的。 – Kitsune