/ / JSON се раздели в рубин - рубинка на релси, json, рубин

JSON се анализира в рубин - рубинка на релси, json, рубин

В базата данни на моите релси имам обект с текстово поле, което е валидно json:

""AACAY, AAOI, AAON, AATI, ABAX,ZYXI""

Ако се обадя на JSON.parse на полето в рубин, то грешки с това:

JSON::ParserError: 784: unexpected token at ""AACAY, AAOI, AAON, AATI, ABAX,ZYXI""

Ако обаче се обадя на JSON.parse на същия низ в браузъра, който работи.

Защо рубинът не се обажда?

Отговори:

0 за отговор № 1

Нейната грешка в JSON анализатор, който е фиксиран като v2.0 на json gem.

# json_parser_test.rb
require "json"
puts JSON.parse(""AACAY, AAOI, AAON, AATI, ABAX,ZYXI"")

maxcal@MaxBook ~/p/s/tmp> gem list json

*** LOCAL GEMS ***

json (1.8.3)
json-schema (2.7.0)
jsonapi (0.1.1.beta6)
jsonapi-parser (0.1.1.beta3)
jsonapi-renderer (0.1.1.beta1)
multi_json (1.12.1, 1.11.2)
maxcal@MaxBook ~/p/s/tmp> ruby json_parser_test.rb
/Users/maxcal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/json/common.rb:156:in `parse": 784: unexpected token at ""AACAY, AAOI, AAON, AATI, ABAX,ZYXI"" (JSON::ParserError)
from /Users/maxcal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/json/common.rb:156:in `parse"
from json_parser_test.rb:2:in `<main>"

Надстройването на скъпоценните камъни на JSON прави грешката на анализатора да изчезне:

maxcal@MaxBook ~/p/s/tmp> gem install json -v 2.0
Fetching: json-2.0.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed json-2.0.0
Building YARD (yri) index for json-2.0.0...
Done installing documentation for json after 2 seconds
1 gem installed
maxcal@MaxBook ~/p/s/tmp> ruby json_parser_test.rb
AACAY, AAOI, AAON, AATI, ABAX,ZYXI

2 за отговор № 2

Срещам същия проблем с JSON.parse за низ, вмъкнат в JSON низ. Моето решение беше да избягам JSON::ParserError с YAML.

YAML.load(""AACAY, AAOI, AAON, AATI, ABAX,ZYXI"")
=> "AACAY, AAOI, AAON, AATI, ABAX,ZYXI"

Пазете се от gotchas все пак. виждам тази тематична тема


0 за отговор № 3

JSON.parse () не работи с всички низови формати. Веригата трябва да има следния формат. "" AACAY ":" AAOI "," AAON ":" AATI "," ABAX ":" ZYXI " който съдържа структуриран обект.