无法将 JSONValue 写入 NSDictionary - JSON 框架不起作用

Posted

技术标签:

【中文标题】无法将 JSONValue 写入 NSDictionary - JSON 框架不起作用【英文标题】:Unable to write JSONValue into NSDictionary - JSON Framework not working 【发布时间】:2014-02-18 07:13:17 【问题描述】:

我正在使用 JSON 接收响应,然后尝试将其保存在 NSDictionary 中。我在同一个应用程序的近 12 个克隆中使用了相同的代码,并且效果很好。但是,在我的一个应用程序中,我无法做到这一点。

    NSDictionary *resultsDictionary = [jsonString JSONValue];
    NSString *statusString = [resultsDictionary objectForKey:@"status"];

这是一个简单的两行代码,可以正常工作,但我不知道这次发生了什么。可能是我的 JSON 框架无法正常工作。但我在JSONValue


"status": "Success",
"data": [
    
        "userName": "abc@gmail.com",
        "first_name": "ABC",
        "last_name": "XYZ",
        "gender": "male",
        "userid": 1,
        "membershipStatus": "Active",
        "Saldo": 499.749,
        "Avatar": "no_photo.gif",
        "uniqueCode": "abc234abc234",
        "registerKey": "abc543abc534",
        "eMail": "abc@gmail.com"
    
]

不过,当我执行它时,我得到了这个错误:

[__NSCFConstantString objectForKey:]: unrecognized selector sent to instance

因为resultDictionay 是空的。

为什么resultDictionay 是空的?有什么建议吗?

【问题讨论】:

请检查您是否使用 if([jsonString JSONValue]isKindOfClass:[NSDictionary Class]) 从服务器获取字典 我正在从服务器获取 NSString 并为其他克隆获取相同的字符串。仍然在那里工作正常。 【参考方案1】:
[jsonString JSONValue];

在您的项目中设置目标依赖项,点击此链接

Parsing json in an ios app

JSONValue 是来自 SBJson 的第三方库。 Apple 有内置框架用于转换 json 使用这种方法

使用这个

NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

【讨论】:

【参考方案2】:

试试这个代码:

NSURLResponse *response;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
strResponse = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"returnString : %@",strResponse);


NSData *responseData = [strResponse dataUsingEncoding:NSUTF8StringEncoding];

id jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&jsonError];

if ([jsonObject isKindOfClass:[NSDictionary class]]) 
    tempDict = (NSDictionary *)jsonObject;

【讨论】:

以上是关于无法将 JSONValue 写入 NSDictionary - JSON 框架不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在Swift中优雅地使用UIImage

-JSONValue 失败

-JSONValue 失败。错误是:令牌的非法开始 [']

springdoc-openapi 如何在不更改 toString 的情况下使用 @JsonValue 枚举格式?

将josn对象赋值给form

从 NSDictionary 转换为 [String:Any?]