-1

我已经做了很多很多时间。但是我不知道为什么当我尝试从 NSDictionary 中获取这个对象时,我无法弄清楚这个对象有什么问题。

我有 NSMutableArray 对象,它具有以下数据。

( { SelectUserDataResult = "[{ 'UserID': '3D5CC4E6-25E8-4591-A84A-6BD7D020DB17', 'ClientID': '895D7BE5-B5D0-48AE-8AAB-6863FCD1D5BF', 'TimeZoneCulture_Term': 'en-US', ' Currency_Term': 'GBP', 'LoginLogID': 'c76960b1-aa24-454f-9fe7-f4f3960fefd4' }]"; } )

现在我获取我的第一个对象

NSDictionary *dicResponse = [[[NSDictionary alloc]initWithDictionary:(NSDictionary *)[data objectAtIndex:0]] objectForKey:@"SelectUserDataResult"];
NSLog(@"%@",dicResponse);

[{ 'UserID': '3D5CC4E6-25E8-4591-A84A-6BD7D020DB17', 'ClientID': '895D7BE5-B5D0-48AE-8AAB-6863FCD1D5BF', 'TimeZoneCulture_Term': 'en-US', 'Currency_Term': 'GBP ', 'LoginLogID': 'c76960b1-aa24-454f-9fe7-f4f3960fefd4' }]

现在,从上面我想获取UserID和其他东西,我只需要这样的代码

NSString *abc = [dicResponse objectForKey:@"UserID"];

但它给了我这样的错误

-[__NSCFString objectForKey:]:无法识别的选择器发送到实例 0x7a70200

找不到我错的地方。

谢谢

========= 第 2 部分

我只是想改变我的 NSMutableArray 对象数据如下

(“[{'UserID':'3D5CC4E6-25E8-4591-A84A-6BD7D020DB17','ClientID':'895D7BE5-B5D0-48AE-8AAB-6863FCD1D5BF','TimeZoneCulture_Term':'en-US','Currency_Term': 'GBP', 'LoginLogID': 'c76960b1-aa24-454f-9fe7-f4f3960fefd4' }]")

NSDictionary *dicResponse = (NSDictionary *)[data objectAtIndex:0];

给了我和上次一样的东西。

如何按照 mikeweller 的建议删除 "。

4

2 回答 2

3

错误告诉你这dicResponse实际上是一个字符串。

这意味着SelectUserDataResult键有一个字符串值,可以在您发布的数据中看到,因为SelectUserDataResult' 的值被双引号括起来。

删除周围的环境"SelectUserDataResult您的代码应该可以工作。

如果您从外部源将此字符串作为 JSON 获取,则必须使用NSJSONSerialization

于 2013-05-03T08:59:30.523 回答
0

您必须使用 JSON 解析器来解析字符串,但由于您的字符串是使用单引号生成的,因此 JSON 需要使用双引号,因此首先您必须在服务器端或本地更改此设置,将所有单引号替换为双引号,但这是不是一个好的选择。

解析访问以下链接

http://json.parser.online.fr

于 2013-05-03T11:26:33.480 回答