2015-04-17 170 views
1

我從我的web服務如何爲JSON字符串賦值?

0: { 
Username: "John" 
Password: "12345" 
Position: "Admin" 
Job: "Developer" 
ResourceJobId: 1 
} 

得到這個JSON對象,當我嘗試分配一個值,例如,用戶名JSON字符串,我得到一個語義錯誤:

id obj = [NSJSONSerialization JSONObjectWithData:data 
               options:NSJSONReadingAllowFragments 
                error:&error]; 
      for (NSDictionary *dictionary in array) { 
       NSString *usernameString = @""; 
//this line of code gives me an error: Expression is not assignable    
[dictionary objectForKey:@"Username"] = usernameString ; 

我知道如何使用NSJSONSerialization類獲取JSON對象,但我的目標是如何將值@「」分配給JSON對象。 那麼如何將值@「」分配給用戶名JSON字符串呢?

+2

使用[dictionary setValue @「」forKey @「」] – Hanuman

+0

我沒有在任何地方看到「數組」,所以這不是您的完整代碼。向我們展示您的_complete_代碼。我也不知道你的意思是「語義錯誤」。你的意思是編譯器的錯誤信息嗎?什麼錯誤信息?最好複製並粘貼。 – gnasher729

+0

以這種方式,我得到這個錯誤[__NSCFDictionary setObject:forKey:]:發送到不可變對象的變異方法' – junko76

回答

1

當你正試圖從array獲取dictionary。它不是可變字典,因此您需要在從Array獲取數據時創建NSMutableDictionary。以下代碼將幫助您更改username

for (NSMutableDictionary *dictionary in array) 
{ 
    NSMutableDictionary* dictTemp = [NSMutableDictionary dictionaryWithDictionary:dictionary]; 

    [dictTemp setObject:usernameString [email protected]"Username"]; 

    [_arrayList replaceObjectAtIndex:index withObject:dictTemp]; 
} 
+0

@ junko76設置一個值,讓我知道你想要別的東西。 –

+0

謝謝!它的工作 – junko76

+0

歡迎夥計... –

0

嗯,你的賦值操作是寫錯了,應該是確實是這樣的:

  • 如果你需要從字典

    usernameString = [dictionary objectForKey:@"Username"]; 
    
  • 獲得價值如果你想設置一個值,你的字典首先應該是你的字典NSMutableDictionary

    [dictionary setObject:usernameString forKey:@"Username"]; 
    
+0

我想爲我的字典 – junko76

0
NSData *data = [NSData dataWithContentsOfURL:url]; 
     NSError *error; 
     id obj = [NSJSONSerialization JSONObjectWithData:data 
               options:NSJSONReadingAllowFragments 
                error:&error]; 

     if(!error && [obj isKindOfClass:[NSArray class]]){ 
      NSArray *array = (NSArray *)obj; 
      Booking *booking = nil; 
      for (NSMutableDictionary *dictionary in array) { 
       NSString *usernameString = @""; 
//this line of code gives me an error: Expression is not assignable    
[dictionary objectForKey:@"Username"] = usernameString; 

是的,是一個編譯器錯誤

0

您需要有一個mutabledictionary才能更改該值。試試這個

for (NSDictionary *dictionary in array) { 
    NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:dictionary]; 
    NSString *usernameString = @"";  
    [mutableDictionary setValue:@"" forKey:usernameString]; 
}  
0

即使答案是正確的,我想補充一點,你不必這樣做你自己的。 NSJSONSerialization已經有一個解決方案。只需通過以下選項之一:

NSJSONReadingMutableContainers = (1UL << 0), 
NSJSONReadingMutableLeaves = (1UL << 1), 

閱讀JSON時。

+0

我想添加一票,但我是新的satckoverflow,所以我不能這樣做。謝謝 – junko76

+0

沒問題,我不是在這裏爲代表,而是在幫助。別客氣。 –