Tôi hiểu rằng trong JSON, các khóa được cho là được bao quanh trong dấu ngoặc kép. Tuy nhiên, tôi đang sử dụng một nguồn dữ liệu không trích dẫn chúng, điều này làm cho trình phân tích cú pháp JSON của Ruby đưa ra một lỗi. Có cách nào để thực hiện phân tích cú pháp 'không nghiêm ngặt' không?Phân tích cú pháp JSON mà không có khóa được trích dẫn
Ví dụ:
>> JSON.parse('{name:"hello", age:"23"}')
JSON::ParserError: 618: unexpected token at '{name:"hello", age:"23"}'
from /Library/Ruby/Gems/1.8/gems/json-1.1.7/lib/json/common.rb:122:in `parse'
from /Library/Ruby/Gems/1.8/gems/json-1.1.7/lib/json/common.rb:122:in `parse'
from (irb):5
>> JSON.parse('{"name":"hello", "age":"23"}')
=> {"name"=>"hello", "age"=>"23"}
>>
(tôi đã cố gắng sử dụng một biểu thức chính quy để thêm dấu ngoặc kép trong trước khi phân tích cú pháp, nhưng không thể làm cho nó hoàn toàn làm việc).
Nếu nó không phải là JSON, nó không phải là JSON. Nó có thể giống với nó một cách hời hợt, nhưng giải pháp chính xác là sửa chữa mã nguồn để nó thực sự mang lại cho JSON không phải là một cái gì đó trông giống như một JSON-nhưng-không-như-là-không-. –
Rất tiếc, tôi không có quyền kiểm soát nguồn, đó là từ bên thứ ba. Ví dụ: –
http://www.google.com/ig/calculator?hl=vi&q=100AUD=?USD chẳng hạn yêu cầu những gì anh ta yêu cầu. @ floyd có giải pháp dưới đây - và có thể chấp nhận được – Rabbott