我是开发和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"; 
在这里我把json查询变成了一个字符串(*str)
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 
//   NSString *stringFromData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
//    NSLog(@"%@", stringFromData);
当我试图实现这个注释的代码我得到了预期的结果,但我想把所有数据放入字典并显示它,所以我试图将数据转换为字典
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);
}
我正在尝试将 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
        }
    }
}
转换后的 JSON 数据(来自 Swift 对象)看起来像这样:
[
     "Monday": [ "weekday" : "Monday",
                 "available" : true,
                 "times": [
                     ["startTime": "9:00 AM", "endTime": …这是返回错误的原因:
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]];
我发布了一些东西之后,我正在使用NSJsonSerialization来取回一个json返回.我要么得到正确的回报,要么得到:
{
"status":"false"
}
在我尝试解析它之前,我需要检查是否收回了我的回复(因为如果我要求的密钥不存在它会崩溃)但是如果我检查
[whatever objectForKey:@"status"] == nil
当它是零时它没关系,但是如果它不存在它会崩溃(因为我收回了我的其他回报)
我得到的崩溃就是这个,似乎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'
我需要找出一种方法来了解我得到了哪些回报,以便我可以采取相应行动.
我正在使用JSON-RPC在iOS应用程序和服务器之间进行通信.服务器的某些返回值是可选的.
考虑到我正在使用的技术组合,最好是返回这些空值,如{"telephone":null},还是完全省略响应中的"telephone"元素?
对我要问的问题的进一步解释:
它看起来不像JSON-RPC规范与方法结果有很大关系(如果我错了请纠正我)并且显然不发送负载null元素会提高性能并减少带宽.我最感兴趣的是iOS NSJSONSerialization视角下的最佳方法.是否更容易/更好地检查NSDictionary中是否存在密钥或现有密钥是否具有空值?
要DeSerialize一个JSON字符串我使用以下方法:
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error
但是,我发现阅读选项会返回可变对象.有没有办法使用哪种方法可以接收不可变的对象?
我目前正在阅读Pragmatic iOS 6书籍,并且无法理解第3章在关于GCD的部分中解释的以下代码行:
    NSJSONSerialization *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
    //... some code here
    NSArray *tweets = (NSArray *) jsonResponse; //<-- this line
是说该NSJSONSSerialization对象可以自动返回NSSArray的一个实例,然后存储在tweets?我检查了Apple文档,但只看到了限制使用的项目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).}
对不起,由于敏感的用户数据,我不允许从JSON-Response中提供任何信息(它只出现在一些内部帐户中,其中错误日志级别设置为低以检测此问题). 
其他一些信息:
UPDATE 1:解析机构(NSData的的扩展)
- (NSDictionary *)objectFromJSONDataWithError:(NSError **)error {
    NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData: self
                                                               options: 0
                                                                 error: error];
    return jsonObject;
}
更新2:用于下载数据的NSOperation  - 主要()的内容 - …
我正在使用一个文件来处理我对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: …我写了一个帮助器类,我向服务器发出了所有请求(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)
这是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 …