2015-06-01 2 views
0

решаемая:Parse возвратил текст в объект JSON в Swift?

Я был в состоянии решить эту проблему в вопросе с этим:

if let returnedData = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as? NSString? { 
       let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)! 
       let trimmedDataString = ((dataString.stringByReplacingOccurrencesOfString("YAHOO.Finance.SymbolSuggest.ssCallback", withString: "") as NSString).stringByReplacingOccurrencesOfString("(", withString: "") as NSString).stringByReplacingOccurrencesOfString(")", withString: "") 
       let dataFromDataString = trimmedDataString.dataUsingEncoding(NSUTF8StringEncoding)! 
       if let jsonObject: AnyObject = NSJSONSerialization.JSONObjectWithData(dataFromDataString, options: .allZeros, error: nil) { 
        if let resultSet = jsonObject["ResultSet"] as! NSDictionary? { 
         println(resultSet) 
        } 
       } 

      } 

Оригинал Вопрос:

я в настоящее время с помощью Yahoo! Финансовый YQL для возврата данных для акций. Я могу запросить акции и успешно вернуть желаемую информацию, но только если я знаю символ акции (AAPL, GOOG, FDX). Тем не менее, я хотел бы иметь возможность реплицировать функцию поиска приложения iOS «Акции», которое позволяет выполнять живой поиск символов запаса при вводе строки.

При использовании this URL, чтобы получить информацию, я получаю ответ JSON, который не имеет смысла для меня:

{"query":{"count":0,"created":"2015-06-01T23:49:49Z","lang":"en-us","results":null}} 

Однако, я был в состоянии найти то, что я ищу с this URL, но данные не возвращаются в формате JSON, что я в настоящее время знает, как обращаться:

YAHOO.Finance.SymbolSuggest.ssCallback({"ResultSet":{"Query":"k","Result":[{"symbol":"K","name":"Kellogg Company","exch":"NYQ","type":"S","exchDisp":"NYSE","typeDisp":"Equity"},{"symbol":"KNDI","name":"Kandi Technologies Group, Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"KO","name":"The Coca-Cola Company","exch":"NYQ","type":"S","exchDisp":"NYSE","typeDisp":"Equity"},{"symbol":"KMI","name":"Kinder Morgan, Inc.","exch":"NYQ","type":"S","exchDisp":"NYSE","typeDisp":"Equity"},{"symbol":"KMB","name":"Kimberly-Clark Corporation","exch":"NYQ","type":"S","exchDisp":"NYSE","typeDisp":"Equity"},{"symbol":"GMCR","name":"Keurig Green Mountain, Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"KORS","name":"Michael Kors Holdings Limited","exch":"NYQ","type":"S","exchDisp":"NYSE","typeDisp":"Equity"},{"symbol":"KLAC","name":"KLA-Tencor Corporation","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"KRFT","name":"Kraft Foods Group, Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"^KLSE","name":"FTSE Bursa Malaysia KLCI","exch":"KLS","type":"I","exchDisp":"Kuala Lumpur Stock Exchange ","typeDisp":"Index"}]}}) 

Я искал весь день способа преобразовать это возвращается строка в объект JSON для использования, что мне нужно в мое заявление.

Поскольку он не возвращается в формате JSON, который я умею анализировать с помощью NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil), я застрял в поиске способа создания объекта JSON из строки. Есть ли направление, на которое я могу указать, что я просто отсутствую?

+0

Попробуйте [JSONModel] (https://github.com/icanzilb/JSONModel). Я использовал его раньше, чтобы работать с API Youtube. Довольно легко реализовать. –

+0

Почему вы считаете, что это не действительный json? – Icaro

+0

@IcaroNZ Полагаю, я не правильно сформулировал свой вопрос. Я вижу, что это JSON, но я не сталкивался с ответом JSON, которого я еще не смог разобрать. Когда вы пытаетесь разобрать JSON, я нажимаю '' 'nil''' на консоль. –

ответ

1

Попробуйте это:

if let returnedData = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as? NSString? { 
    let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)! 
    if let jsonObject: AnyObject = NSJSONSerialization.JSONObjectWithData(dataString, options: .allZeros, error: nil) { 
    if let resultSet = resultSet[yourDictionaryObject objectForKey:@"YAHOO.Finance.SymbolSuggest.ssCallback"] 
     //This should return a array of dictionary 
    } 
}