2015-04-17 88 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

没问题,我不是在这里为代表,而是在帮助。别客气。 –