kesalahan parse json di Ruby - token tak terduga di

Saya mendapatkan kesalahan di banyak tempat ketika mencoba mengambil simbol ticker untuk perusahaan AS dari http://d.yimg.com/autoc.finance.yahoo.com/autoc?callback=YAHOO.Finance.SymbolSuggest.ssCallback&query=Wal-Mart

Saya telah mencoba untuk:

resp = Net::HTTP.get_response(URI.parse(url))
data = resp.body
qwe = data.split("symbol")
p qwe[1]
arr1 = data.split("(")
arr2 = arr1[1].split(")")
fnl = arr2[0].gsub(/-/, '')
fnl = fnl.gsub(/\(/, '')
fnl = fnl.gsub(/\)/, '')
fnl = fnl.gsub(/\./, '')
fnl = fnl.gsub('\'', '"')
fnl = fnl.gsub(/([\{|\,}])\s*([a-zA-Z]+):/, '\1 "\2":')

Tapi ini tidak membantu seperti yang saya lihat:

/Library/Ruby/Gems/1.8/gems/json-1.2.0/lib/json/common.rb:123:in `parse': 353: token tak terduga di '{"symbol":"BEEV","name" : "BENCHMARK ENERGY CORP ' (JSON::ParserError)

Adakah petunjuk tentang kesalahan yang mungkin saya lakukan?


person RahTha    schedule 26.02.2010    source sumber


Jawaban (1)


Saya tidak tahu mengapa Anda melakukan semua penggantian itu. Ini berfungsi dengan baik setelah Anda menghapus panggilan fungsi:

>>> pprint.pprint(json.loads(t[39:-1]))
{'ResultSet': {'Query': 'wal-mart',
               'Result': [{'exch': 'NYQ',
                           'exchDisp': 'NYSE',
                           'name': 'Wal-Mart Stores Inc.',
                           'symbol': 'WMT',
                           'type': 'S'},
                          {'exch': 'MEX',
                           'exchDisp': 'Mexico',
                           'name': 'WAL-MART-V',
                           'symbol': 'WALMEXV.MX',
                           'type': 'S'},
                          {'exch': 'TLX',
                           'name': 'WAL-MART STORES',
                           'symbol': '984101.TI',
                           'type': 'S'},
                          {'exch': 'HAM',
                           'exchDisp': 'Hamburg',
                           'name': 'WAL-MART STORES',
                           'symbol': 'WMT.HM',
                           'type': 'S'},
                          {'exch': 'STU',
                           'exchDisp': 'Stuttgart',
                           'name': 'WAL-MART-V',
                           'symbol': '4GN.SG',
                           'type': 'S'},
                          {'exch': 'FRA',
                           'exchDisp': 'Frankfurt',
                           'name': 'WAL-MART STORES',
                           'symbol': 'WMT.F',
                           'type': 'S'},
                          {'exch': 'FRA',
                           'exchDisp': 'Frankfurt',
                           'name': 'WAL-MART-V',
                           'symbol': '4GN.F',
                           'type': 'S'},
                          {'exch': 'BER',
                           'exchDisp': 'Berlin',
                           'name': 'WAL-MART STORES',
                           'symbol': 'WMT.BE',
                           'type': 'S'},
                          {'exch': 'STU',
                           'exchDisp': 'Stuttgart',
                           'name': 'WAL-MART STORES',
                           'symbol': 'WMT.SG',
                           'type': 'S'},
                          {'exch': 'BUE',
                           'exchDisp': 'Buenos Aires',
                           'name': 'WAL-MART STORES INC 2',
                           'symbol': 'DWMT2.BA',
                           'type': 'S'}]}}
person Ignacio Vazquez-Abrams    schedule 26.02.2010