标签: nsjsonserialization

使用NSJSONSerialization时从NSDictionary获取null

我是开发和stackoverflow的新手,请帮助我.我正在尝试做一个简单的应用程序,其中YQL链接用于获取本地数据并以表格格式显示它.为此我将数据转换为字典,稍后我想将其发送到表中.但是当我试图将数据转换为Dictionary时,它表示null.请帮我.检查下面的截图.提前致谢.

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 
Run Code Online (Sandbox Code Playgroud)

在这里我把json查询变成了一个字符串(*str)

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 

//   NSString *stringFromData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
//    NSLog(@"%@", stringFromData);
Run Code Online (Sandbox Code Playgroud)

当我试图实现这个注释的代码我得到了预期的结果,但我想把所有数据放入字典并显示它,所以我试图将数据转换为字典

NSDictionary *dataFromWeb = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];


NSDictionary *queryDict = [dataFromWeb objectForKey:@"query"];
NSDictionary *results = [dataFromWeb objectForKey:@"results"];
NSString *allResults = [queryDict objectForKey:@"Results"];

NSLog(@"%@", dataFromWeb);

}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

json objective-c ios yahoo-api nsjsonserialization

3
推荐指数
1
解决办法
250
查看次数

以纯 Swift 3 方式将 swift 对象(带有嵌套对象)转换为 JSON 数据

我正在尝试将 swift 对象转换为 JSON,我已经看到了这些 SO question 1 & 2,但我无法将其应用于我的代码。

我有一个 swift 类型的对象[String : DailyTimes],我想以纯 Swift 3 方式将其转换回 JSON 数据,无需任何库。

下面是我的自定义类:

class AvailabilityTimes:{

    struct Times{
        var startTime : String?
        var endTime   : String?


    }

    struct DailyTimes{
        let weekday : String
        var available : Bool
        var times = [Times]()
        mutating func update(times: [Times]){
            self.times = times
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

转换后的 JSON 数据(来自 Swift 对象)看起来像这样:

[
     "Monday": [ "weekday" : "Monday",
                 "available" : true,
                 "times": [
                     ["startTime": "9:00 AM", "endTime": …
Run Code Online (Sandbox Code Playgroud)

ios nsjsonserialization swift3

3
推荐指数
1
解决办法
1412
查看次数

使用不兼容的void类型初始化NSMutableArray __strong

这是返回错误的原因:

NSMutableArray *newArray = [[[NSMutableArray alloc] initWithArray:[NSJSONSerialization JSONObjectWithData:[[[appDelegate.Matches objectAtIndex:(NSUInteger)indexPath] objectForKey:@"chat"] dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil]] addObject:[NSDictionary dictionaryWithObjectsAndKeys:message, @"message", [NSString stringWithFormat:@"%llu", appDelegate.userId], @"id", nil]];
Run Code Online (Sandbox Code Playgroud)

iphone nsmutablearray nsjsonserialization

2
推荐指数
1
解决办法
5211
查看次数

iOS检查JSON返回是否有Key

我发布了一些东西之后,我正在使用NSJsonSerialization来取回一个json返回.我要么得到正确的回报,要么得到:

{
"status":"false"
}
Run Code Online (Sandbox Code Playgroud)

在我尝试解析它之前,我需要检查是否收回了我的回复(因为如果我要求的密钥不存在它会崩溃)但是如果我检查

[whatever objectForKey:@"status"] == nil
Run Code Online (Sandbox Code Playgroud)

当它是零时它没关系,但是如果它不存在它会崩溃(因为我收回了我的其他回报)

我得到的崩溃就是这个,似乎NSJSONSerialzation将NSArray作为NSdictionary返回?:

2012-07-02 11:03:40.426 [9412:10703] -[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x75f03f0
2012-07-02 11:03:40.429 [9412:10703] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x75f03f0'
Run Code Online (Sandbox Code Playgroud)

我需要找出一种方法来了解我得到了哪些回报,以便我可以采取相应行动.

crash ios nsjsonserialization

2
推荐指数
1
解决办法
1320
查看次数

iOS,JSON-RPC和NSJSONSerialization:处理空值

我正在使用JSON-RPC在iOS应用程序和服务器之间进行通信.服务器的某些返回值是可选的.

考虑到我正在使用的技术组合,最好是返回这些空值,如{"telephone":null},还是完全省略响应中的"telephone"元素?

对我要问的问题的进一步解释:

它看起来不像JSON-RPC规范与方法结果有很大关系(如果我错了请纠正我)并且显然不发送负载null元素会提高性能并减少带宽.我最感兴趣的是iOS NSJSONSerialization视角下的最佳方法.是否更容易/更好地检查NSDictionary中是否存在密钥或现有密钥是否具有空值?

null cocoa-touch json-rpc ios nsjsonserialization

2
推荐指数
1
解决办法
3298
查看次数

NSJSONSerialization中的不可变NSJSONReadingOptions

要DeSerialize一个JSON字符串我使用以下方法:

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

但是,我发现阅读选项会返回可变对象.有没有办法使用哪种方法可以接收不可变的对象?

objective-c ios nsjsonserialization

2
推荐指数
1
解决办法
3949
查看次数

使用NSJSONSerialization解析JSON

我目前正在阅读Pragmatic iOS 6书籍,并且无法理解第3章在关于GCD的部分中解释的以下代码行:

    NSJSONSerialization *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
    //... some code here
    NSArray *tweets = (NSArray *) jsonResponse; //<-- this line
Run Code Online (Sandbox Code Playgroud)

是说该NSJSONSSerialization对象可以自动返回NSSArray的一个实例,然后存储在tweets?我检查了Apple文档,但只看到了限制使用的项目NSJSONSerialization,但没有看到它可以转换为什么对象.

谢谢!

ios nsjsonserialization ios6

2
推荐指数
1
解决办法
6186
查看次数

NSJSONSerialization - "字符串解析过程中意外的文件结尾"

我有一些问题有线解析一些REST的反应时.问题是,我不能复制.有时它会发生,我在错误日志中没有相应的信息.

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Unexpected end of file during string parse (expected low-surrogate code point
but did not find one).) UserInfo=0x157bddb0 {NSDebugDescription=Unexpected end of file during string parse (expected low-surrogate code point but did not find one).}
Run Code Online (Sandbox Code Playgroud)


对不起,由于敏感的用户数据,我不允许从JSON-Response中提供任何信息(它只出现在一些内部帐户中,其中错误日志级别设置为低以检测此问题).


其他一些信息:

  • JSON有效(通过http://jsonlint.com/查看)
  • 当试图重现这个问题,我让其他NSError说明,如:
    • 位置XYZ处的字符无效
    • 无效的对象
    • ...



UPDATE 1:解析机构(NSData的的扩展)

- (NSDictionary *)objectFromJSONDataWithError:(NSError **)error {
    NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData: self
                                                               options: 0
                                                                 error: error];

    return jsonObject;
}
Run Code Online (Sandbox Code Playgroud)



更新2:用于下载数据的NSOperation - 主要()的内容 - …

json ios nsjsonserialization

2
推荐指数
1
解决办法
2932
查看次数

Swift iOS API控制器停止工作

我正在使用一个文件来处理我对API的调用,如下所示:

import UIKit

protocol APIControllerProtocol {
    func JSONAPIResults(results: NSArray)

}

class APIController: NSObject {
    var delegate:APIControllerProtocol?

    func GetAPIResultsAsync(urlString:String, elementName:String) {

        //The Url that will be called
        var url = NSURL.URLWithString(urlString)
        //Create a request
        var request: NSURLRequest = NSURLRequest(URL: url)
        //Create a queue to hold the call
        var queue: NSOperationQueue = NSOperationQueue()

        // Sending Asynchronous request using NSURLConnection
        NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{(response:NSURLResponse!, responseData:NSData!, error: NSError!) ->Void in
            var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
            //Serialize the JSON result into a dictionary
            let jsonResult: …
Run Code Online (Sandbox Code Playgroud)

json ios nsjsonserialization swift

2
推荐指数
1
解决办法
3222
查看次数

特定请求的NSErrorFailingURLStringKey(kCFErrorDomainCFNetwork错误-1017)

我写了一个帮助器类,我向服务器发出了所有请求(Rails 4.1).此帮助程序类中的大多数请求都可以正常工作,但一个特定请求始终失败.我正在使用Alamofire来满足我的要求.

这是我的助手类的一些代码:

let responseHandler = { (request: NSURLRequest, response: NSHTTPURLResponse?, object: AnyObject?, error: NSError?) -> Void in
    println("request: \(request) || response: \(response) || object: \(object) || error: \(error)")
}

// make custom request
let request = NSMutableURLRequest(URL: NSURL(string: fullPath)!)
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(["session_key": "ABC"], options: nil, error: nil)
request.HTTPMethod = "GET"
request.allHTTPHeaderFields = ["Accept": "application/json", "Content-Type": "application/json"]

Alamofire.request(request).response(responseHandler)
Run Code Online (Sandbox Code Playgroud)

这是println上面代码中该行的输出:

request: <NSMutableURLRequest: 0x1702007e0> { URL: http:/wolverine.movie-assistor.staging.c66.me/user } || response: nil || object: Optional(<>) || error: Optional(Error Domain=NSURLErrorDomain Code=-1017 "The …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ios nsjsonserialization swift alamofire

2
推荐指数
2
解决办法
2万
查看次数