2013-02-05 5 views
0

현재 NASDAQ, Dow Jones 및 S & P 500에 대한 주식 차트를 만들려고합니다. 합리적인 가격으로 API를 찾을 수 없어 Yahoo Finance Chart API. 현재 JSON, CSV 및 XML을 지원합니다. XML 또는 CSV를 구문 분석 할 때 성능이 이상적이지 않으므로 JSON 응답을 사용하고 싶지만 문제가 발생합니다. JSON 응답은 실제로 유효한 JSON을 반환하지 않습니다. 누구든지 IOS에서이 구문을 분석하는 방법에 대한 통찰력이 있습니까? 아니면 대체 제안이 있습니까?JSON Yahoo Finance Chart 데이터 iOS Parse

다음은 JSON의 URL입니다 : http://chartapi.finance.yahoo.com/instrument/1.1/%5EIXIC/chartdata;type=close;range=1d/json/

답변

1

업데이트 :

실제로, 응답뿐만 아니라 형식이 잘못되었습니다. URL을 다른 증권 시세 표시 기호로 시도했는데 previous_close 필드의 출력에 표식이 보이지 않는 것 같습니다 ("). 빗나간 " 표시를 제거하면 올바르게 확인해야합니다. 원래 ~

"meta" : 
{ 
    "uri" :"/instrument/1.1/ITW/chartdata;type=close;range=1d/json/?callback=", 
    "ticker" : "itw", 
    "unit" : "MIN", 
    "timezone" : "EST", 
    "currency" : "USD", 
    "gmtoffset" : -18000, 
    "previous_close" : 62.9000" 
} 

:

응답 반환은 JSONP 형식입니다. 커프 오프

finance_charts_json_callback({ 
... 
}) 

, 당신은 처음부터 finance_charts_json_callback(과 끝에서 후행 )을 벗겨 유효한 JSON 데이터를 끝낼 수있을 것입니다.

JSONP @ Wikipedia

+0

"finance_charts_json_callback ({...})"내부의 JSON이 여전히 유효성을 검사/파싱하지 않았습니다. – morcutt

0

당신은에서 iOS 5 또는이에 대한 NSJSONSerialization을 사용할 수 이상을 사용하는 경우.

NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

그러나 문제는 JSON 당신이 NSJSONSerialization를 사용하여 구문 분석 할 수 없습니다 유효하지 않은 경우입니다

내가 성공적으로 같은 유효한 JSON으로 변경되었습니다

{ 
    "finance_charts_json_callback": { 
     "meta": { 
      "uri": "/instrument/1.1/^IXIC/chartdata;type=close;range=1d/json/", 
      "ticker": "^ixic", 
      "unit": "MIN", 
      "timezone": "EST", 
      "currency": "USD", 
      "gmtoffset": -18000, 
      "previous_close": "3179.1001" 
     }, 
     "Timestamp": { 
      "min": 1359988200, 
      "max": 1360011600 
     }, 
     "labels": [ 
      1359990000, 
      1359993600, 
      1359997200, 
      1360000800, 
      1360004400, 
      1360008000, 
      1360011600 
     ], 
     "ranges": { 
      "close": { 
       "min": 3131.04, 
       "max": 3168.8701 
      } 
     }, 
     "series": [ 
      { 
       "Timestamp": 1359988218, 
       "close": 3160.5601 
      }, 
      { 
       "Timestamp": 1359997260, 
       "close": 3139.6799 
      }, 
      { 
       "Timestamp": 1359997320, 
       "close": 3139.55 
      }, 
      { 
       "Timestamp": 1359997380, 
       "close": 3140.3501 
      }, 
      { 
       "Timestamp": 1359997440, 
       "close": 3140.0601 
      }, 
      { 
       "Timestamp": 1359997500, 
       "close": 3140.0601 
      }, 
      { 
       "Timestamp": 1359997560, 
       "close": 3140.1599 
      }, 
      { 
       "Timestamp": 1359997620, 
       "close": 3139.1799 
      }, 
      { 
       "Timestamp": 1359997680, 
       "close": 3137.1899 
      }, 
      { 
       "Timestamp": 1359997740, 
       "close": 3135.71 
      }, 
      { 
       "Timestamp": 1359997800, 
       "close": 3136.54 
      }, 
      { 
       "Timestamp": 1359997860, 
       "close": 3136.78 
      }, 
      { 
       "Timestamp": 1359997920, 
       "close": 3137.74 
      }, 
      { 
       "Timestamp": 1359997980, 
       "close": 3139.3301 
      }, 
      { 
       "Timestamp": 1359998040, 
       "close": 3139.2 
      }, 
      { 
       "Timestamp": 1359998100, 
       "close": 3139.0701 
      }, 
      { 
       "Timestamp": 1359998160, 
       "close": 3139.04 
      }, 
      { 
       "Timestamp": 1359998220, 
       "close": 3139.54 
      }, 
      { 
       "Timestamp": 1359998280, 
       "close": 3139.8301 
      }, 
      { 
       "Timestamp": 1359998340, 
       "close": 3139.51 
      }, 
      { 
       "Timestamp": 1359998400, 
       "close": 3139.8 
      }, 
      { 
       "Timestamp": 1359998460, 
       "close": 3139.97 
      }, 
      { 
       "Timestamp": 1359998520, 
       "close": 3138.78 
      }, 
      { 
       "Timestamp": 1359998580, 
       "close": 3138.1699 
      }, 
      { 
       "Timestamp": 1359998640, 
       "close": 3138.75 
      }, 
      { 
       "Timestamp": 1359998700, 
       "close": 3139.78 
      }, 
      { 
       "Timestamp": 1359998760, 
       "close": 3140.4299 
      }, 
      { 
       "Timestamp": 1359998820, 
       "close": 3141.01 
      }, 
      { 
       "Timestamp": 1359998880, 
       "close": 3141.2 
      }, 
      { 
       "Timestamp": 1359998999, 
       "close": 3141.0701 
      }, 
      { 
       "Timestamp": 1359999000, 
       "close": 3141.47 
      }, 
      { 
       "Timestamp": 1359999060, 
       "close": 3141.79 
      }, 
      { 
       "Timestamp": 1359999120, 
       "close": 3141.8201 
      }, 
      { 
       "Timestamp": 1359999180, 
       "close": 3141.8701 
      }, 
      { 
       "Timestamp": 1359999240, 
       "close": 3141.72 
      }, 
      { 
       "Timestamp": 1359999300, 
       "close": 3141.04 
      }, 
      { 
       "Timestamp": 1359999360, 
       "close": 3142.0801 
      }, 
      { 
       "Timestamp": 1359999420, 
       "close": 3141.9099 
      }, 
      { 
       "Timestamp": 1359999480, 
       "close": 3142.4199 
      }, 
      { 
       "Timestamp": 1359999540, 
       "close": 3142.97 
      }, 
      { 
       "Timestamp": 1359999600, 
       "close": 3142.6899 
      }, 
      { 
       "Timestamp": 1359999660, 
       "close": 3143.3899 
      }, 
      { 
       "Timestamp": 1359999720, 
       "close": 3143.1599 
      }, 
      { 
       "Timestamp": 1359999780, 
       "close": 3143.45 
      }, 
      { 
       "Timestamp": 1359999840, 
       "close": 3143.26 
      }, 
      { 
       "Timestamp": 1359999900, 
       "close": 3143.1699 
      }, 
      { 
       "Timestamp": 1359999960, 
       "close": 3142.4099 
      }, 
      { 
       "Timestamp": 1360000020, 
       "close": 3142.1799 
      }, 
      { 
       "Timestamp": 1360000080, 
       "close": 3142 
      }, 
      { 
       "Timestamp": 1360000140, 
       "close": 3142.28 
      }, 
      { 
       "Timestamp": 1360000200, 
       "close": 3142.22 
      }, 
      { 
       "Timestamp": 1360000260, 
       "close": 3141.75 
      }, 
      { 
       "Timestamp": 1360000320, 
       "close": 3140.8101 
      }, 
      { 
       "Timestamp": 1360000380, 
       "close": 3140.4399 
      }, 
      { 
       "Timestamp": 1360000440, 
       "close": 3140.2 
      }, 
      { 
       "Timestamp": 1360000500, 
       "close": 3140.3201 
      }, 
      { 
       "Timestamp": 1360000560, 
       "close": 3140.1899 
      }, 
      { 
       "Timestamp": 1360000620, 
       "close": 3140.4199 
      }, 
      { 
       "Timestamp": 1360000680, 
       "close": 3140.21 
      }, 
      { 
       "Timestamp": 1360000740, 
       "close": 3140.48 
      }, 
      { 
       "Timestamp": 1360000800, 
       "close": 3140.1001 
      }, 
      { 
       "Timestamp": 1360000860, 
       "close": 3140.3501 
      }, 
      { 
       "Timestamp": 1360000920, 
       "close": 3140.6101 
      }, 
      { 
       "Timestamp": 1360000980, 
       "close": 3140.24 
      }, 
      { 
       "Timestamp": 1360001040, 
       "close": 3141.0601 
      }, 
      { 
       "Timestamp": 1360001100, 
       "close": 3141.27 
      }, 
      { 
       "Timestamp": 1360001160, 
       "close": 3141.5701 
      }, 
      { 
       "Timestamp": 1360001220, 
       "close": 3141.6001 
      }, 
      { 
       "Timestamp": 1360001280, 
       "close": 3142.8601 
      }, 
      { 
       "Timestamp": 1360001340, 
       "close": 3142.8401 
      }, 
      { 
       "Timestamp": 1360001400, 
       "close": 3142.6399 
      }, 
      { 
       "Timestamp": 1360001460, 
       "close": 3142.8701 
      }, 
      { 
       "Timestamp": 1360001520, 
       "close": 3143.1001 
      }, 
      { 
       "Timestamp": 1360001580, 
       "close": 3142.8501 
      }, 
      { 
       "Timestamp": 1360001640, 
       "close": 3142.8 
      }, 
      { 
       "Timestamp": 1360001700, 
       "close": 3142.5901 
      }, 
      { 
       "Timestamp": 1360001760, 
       "close": 3140.8501 
      }, 
      { 
       "Timestamp": 1360001820, 
       "close": 3140.5 
      }, 
      { 
       "Timestamp": 1360001880, 
       "close": 3140.77 
      }, 
      { 
       "Timestamp": 1360001940, 
       "close": 3141.8201 
      }, 
      { 
       "Timestamp": 1360002000, 
       "close": 3141.71 
      }, 
      { 
       "Timestamp": 1360002060, 
       "close": 3141.9399 
      }, 
      { 
       "Timestamp": 1360002120, 
       "close": 3142.49 
      }, 
      { 
       "Timestamp": 1360002180, 
       "close": 3142.1399 
      }, 
      { 
       "Timestamp": 1360002240, 
       "close": 3142.6499 
      }, 
      { 
       "Timestamp": 1360002300, 
       "close": 3142.3999 
      }, 
      { 
       "Timestamp": 1360002360, 
       "close": 3141.72 
      }, 
      { 
       "Timestamp": 1360002420, 
       "close": 3141.77 
      }, 
      { 
       "Timestamp": 1360002480, 
       "close": 3141.1799 
      }, 
      { 
       "Timestamp": 1360002540, 
       "close": 3139.8301 
      }, 
      { 
       "Timestamp": 1360002600, 
       "close": 3139.8501 
      }, 
      { 
       "Timestamp": 1360002660, 
       "close": 3138.25 
      }, 
      { 
       "Timestamp": 1360002720, 
       "close": 3138.74 
      }, 
      { 
       "Timestamp": 1360002780, 
       "close": 3138.3799 
      }, 
      { 
       "Timestamp": 1360002840, 
       "close": 3138.2 
      }, 
      { 
       "Timestamp": 1360002900, 
       "close": 3138.24 
      }, 
      { 
       "Timestamp": 1360002960, 
       "close": 3138.99 
      }, 
      { 
       "Timestamp": 1360003020, 
       "close": 3138.8401 
      }, 
      { 
       "Timestamp": 1360003080, 
       "close": 3138.5801 
      }, 
      { 
       "Timestamp": 1360003140, 
       "close": 3138.3301 
      }, 
      { 
       "Timestamp": 1360003200, 
       "close": 3139.0801 
      }, 
      { 
       "Timestamp": 1360003260, 
       "close": 3139.25 
      }, 
      { 
       "Timestamp": 1360003320, 
       "close": 3139.05 
      }, 
      { 
       "Timestamp": 1360003380, 
       "close": 3139.03 
      }, 
      { 
       "Timestamp": 1360003440, 
       "close": 3138.99 
      }, 
      { 
       "Timestamp": 1360003500, 
       "close": 3137.99 
      }, 
      { 
       "Timestamp": 1360003560, 
       "close": 3137.3601 
      }, 
      { 
       "Timestamp": 1360003679, 
       "close": 3135.8799 
      }, 
      { 
       "Timestamp": 1360003680, 
       "close": 3136 
      }, 
      { 
       "Timestamp": 1360003740, 
       "close": 3136.49 
      }, 
      { 
       "Timestamp": 1360003800, 
       "close": 3136.52 
      }, 
      { 
       "Timestamp": 1360003860, 
       "close": 3135.3899 
      }, 
      { 
       "Timestamp": 1360003920, 
       "close": 3135.77 
      }, 
      { 
       "Timestamp": 1360003980, 
       "close": 3135.8501 
      }, 
      { 
       "Timestamp": 1360004040, 
       "close": 3136.47 
      }, 
      { 
       "Timestamp": 1360004100, 
       "close": 3136.4299 
      }, 
      { 
       "Timestamp": 1360004160, 
       "close": 3137.46 
      }, 
      { 
       "Timestamp": 1360004220, 
       "close": 3137.7 
      }, 
      { 
       "Timestamp": 1360004280, 
       "close": 3137.55 
      }, 
      { 
       "Timestamp": 1360004340, 
       "close": 3137.6599 
      }, 
      { 
       "Timestamp": 1360004400, 
       "close": 3136.26 
      }, 
      { 
       "Timestamp": 1360004460, 
       "close": 3136.6101 
      }, 
      { 
       "Timestamp": 1360004520, 
       "close": 3137.02 
      }, 
      { 
       "Timestamp": 1360004580, 
       "close": 3137.54 
      }, 
      { 
       "Timestamp": 1360004640, 
       "close": 3138.21 
      }, 
      { 
       "Timestamp": 1360004700, 
       "close": 3137.9199 
      }, 
      { 
       "Timestamp": 1360004760, 
       "close": 3137.9299 
      }, 
      { 
       "Timestamp": 1360004820, 
       "close": 3138.3201 
      }, 
      { 
       "Timestamp": 1360004880, 
       "close": 3138.3201 
      }, 
      { 
       "Timestamp": 1360004940, 
       "close": 3137.5801 
      }, 
      { 
       "Timestamp": 1360005000, 
       "close": 3138.0701 
      }, 
      { 
       "Timestamp": 1360005060, 
       "close": 3138.3301 
      }, 
      { 
       "Timestamp": 1360005120, 
       "close": 3138.3701 
      }, 
      { 
       "Timestamp": 1360005180, 
       "close": 3138.26 
      }, 
      { 
       "Timestamp": 1360005240, 
       "close": 3138.23 
      }, 
      { 
       "Timestamp": 1360005300, 
       "close": 3138.5 
      }, 
      { 
       "Timestamp": 1360005360, 
       "close": 3139.23 
      }, 
      { 
       "Timestamp": 1360005420, 
       "close": 3139.1899 
      }, 
      { 
       "Timestamp": 1360005480, 
       "close": 3138.75 
      }, 
      { 
       "Timestamp": 1360005540, 
       "close": 3137.6799 
      }, 
      { 
       "Timestamp": 1360005600, 
       "close": 3139.03 
      }, 
      { 
       "Timestamp": 1360005660, 
       "close": 3138.46 
      }, 
      { 
       "Timestamp": 1360005720, 
       "close": 3138.05 
      }, 
      { 
       "Timestamp": 1360005780, 
       "close": 3137.96 
      }, 
      { 
       "Timestamp": 1360005840, 
       "close": 3138.1101 
      }, 
      { 
       "Timestamp": 1360005900, 
       "close": 3136.8701 
      }, 
      { 
       "Timestamp": 1360005960, 
       "close": 3136.71 
      }, 
      { 
       "Timestamp": 1360006020, 
       "close": 3136.73 
      }, 
      { 
       "Timestamp": 1360006080, 
       "close": 3138.22 
      }, 
      { 
       "Timestamp": 1360006140, 
       "close": 3139.8501 
      }, 
      { 
       "Timestamp": 1360006200, 
       "close": 3140.49 
      }, 
      { 
       "Timestamp": 1360006260, 
       "close": 3140.8201 
      }, 
      { 
       "Timestamp": 1360006320, 
       "close": 3139.8401 
      }, 
      { 
       "Timestamp": 1360006380, 
       "close": 3140.28 
      }, 
      { 
       "Timestamp": 1360006440, 
       "close": 3139.73 
      }, 
      { 
       "Timestamp": 1360006500, 
       "close": 3139.3 
      }, 
      { 
       "Timestamp": 1360006560, 
       "close": 3140.1599 
      }, 
      { 
       "Timestamp": 1360006620, 
       "close": 3139.6299 
      }, 
      { 
       "Timestamp": 1360006680, 
       "close": 3140.0901 
      }, 
      { 
       "Timestamp": 1360006740, 
       "close": 3140.24 
      }, 
      { 
       "Timestamp": 1360006800, 
       "close": 3140.3101 
      }, 
      { 
       "Timestamp": 1360006860, 
       "close": 3140.8401 
      }, 
      { 
       "Timestamp": 1360006920, 
       "close": 3140.95 
      }, 
      { 
       "Timestamp": 1360006980, 
       "close": 3140.8799 
      }, 
      { 
       "Timestamp": 1360007040, 
       "close": 3142.1101 
      }, 
      { 
       "Timestamp": 1360007100, 
       "close": 3142.1399 
      }, 
      { 
       "Timestamp": 1360007160, 
       "close": 3141.8301 
      }, 
      { 
       "Timestamp": 1360007220, 
       "close": 3141.0701 
      }, 
      { 
       "Timestamp": 1360007280, 
       "close": 3140.99 
      }, 
      { 
       "Timestamp": 1360007340, 
       "close": 3140.79 
      }, 
      { 
       "Timestamp": 1360007400, 
       "close": 3141.1499 
      }, 
      { 
       "Timestamp": 1360007460, 
       "close": 3140.76 
      }, 
      { 
       "Timestamp": 1360007520, 
       "close": 3139.6499 
      }, 
      { 
       "Timestamp": 1360007580, 
       "close": 3140.0701 
      }, 
      { 
       "Timestamp": 1360007640, 
       "close": 3140.51 
      }, 
      { 
       "Timestamp": 1360007700, 
       "close": 3140.98 
      }, 
      { 
       "Timestamp": 1360007760, 
       "close": 3141.3601 
      }, 
      { 
       "Timestamp": 1360007820, 
       "close": 3142.46 
      }, 
      { 
       "Timestamp": 1360007880, 
       "close": 3143.3899 
      }, 
      { 
       "Timestamp": 1360007940, 
       "close": 3143.24 
      }, 
      { 
       "Timestamp": 1360008000, 
       "close": 3142.01 
      }, 
      { 
       "Timestamp": 1360008060, 
       "close": 3142.02 
      }, 
      { 
       "Timestamp": 1360008120, 
       "close": 3141.0701 
      }, 
      { 
       "Timestamp": 1360008180, 
       "close": 3141.25 
      }, 
      { 
       "Timestamp": 1360008240, 
       "close": 3141.3999 
      }, 
      { 
       "Timestamp": 1360008300, 
       "close": 3141.3799 
      }, 
      { 
       "Timestamp": 1360008360, 
       "close": 3141.74 
      }, 
      { 
       "Timestamp": 1360008420, 
       "close": 3141.96 
      }, 
      { 
       "Timestamp": 1360008480, 
       "close": 3141.3201 
      }, 
      { 
       "Timestamp": 1360008540, 
       "close": 3140.79 
      }, 
      { 
       "Timestamp": 1360008600, 
       "close": 3140.8201 
      }, 
      { 
       "Timestamp": 1360008660, 
       "close": 3140.73 
      }, 
      { 
       "Timestamp": 1360008720, 
       "close": 3139.6299 
      }, 
      { 
       "Timestamp": 1360008780, 
       "close": 3139.54 
      }, 
      { 
       "Timestamp": 1360008840, 
       "close": 3140.29 
      }, 
      { 
       "Timestamp": 1360008900, 
       "close": 3140.3899 
      }, 
      { 
       "Timestamp": 1360008960, 
       "close": 3140 
      }, 
      { 
       "Timestamp": 1360009020, 
       "close": 3140.04 
      }, 
      { 
       "Timestamp": 1360009080, 
       "close": 3139.8101 
      }, 
      { 
       "Timestamp": 1360009140, 
       "close": 3140.1799 
      }, 
      { 
       "Timestamp": 1360009200, 
       "close": 3139.9099 
      }, 
      { 
       "Timestamp": 1360009260, 
       "close": 3139.8899 
      }, 
      { 
       "Timestamp": 1360009320, 
       "close": 3140.22 
      }, 
      { 
       "Timestamp": 1360009380, 
       "close": 3140.1899 
      }, 
      { 
       "Timestamp": 1360009440, 
       "close": 3138.8501 
      }, 
      { 
       "Timestamp": 1360009500, 
       "close": 3140.3301 
      }, 
      { 
       "Timestamp": 1360009560, 
       "close": 3141.0901 
      }, 
      { 
       "Timestamp": 1360009679, 
       "close": 3141.97 
      }, 
      { 
       "Timestamp": 1360009680, 
       "close": 3141.7 
      }, 
      { 
       "Timestamp": 1360009740, 
       "close": 3141.73 
      }, 
      { 
       "Timestamp": 1360009800, 
       "close": 3140.1399 
      }, 
      { 
       "Timestamp": 1360009860, 
       "close": 3139.6499 
      }, 
      { 
       "Timestamp": 1360009920, 
       "close": 3138.95 
      }, 
      { 
       "Timestamp": 1360009980, 
       "close": 3138.49 
      }, 
      { 
       "Timestamp": 1360010040, 
       "close": 3138.1001 
      }, 
      { 
       "Timestamp": 1360011600, 
       "close": 3131.5 
      } 
     ] 
    } 
} 

당신 NSString 클래스가 제공하는 다양한 기능을 사용하여 유효하지 않은 문자를 대체하여 동일하게 처리해야하며를 사용하여 유효한지 확인하십시오.

+0

올바른 JSON이 유효하지 않습니다. 이 API가 무효 응답을 반환하는 방식은 나에게별로 의미가 없습니다. 이 API에 대한 문서는 없습니다. – morcutt

0

는 다음과 같이 자바 스크립트 평가를 수행해야합니다

window.finance_charts_json_callback(data) { return data; } 
let json_resp = eval(resp); 

IOS에서, 당신은 자바 스크립트 인터프리터를 작성하여 평가 후면 수 있습니다.

관련 문제