我知道在 JSON 中,键应该用双引号引起来。但是,我使用的数据源没有引用它们,这导致 Ruby JSON 解析器引发错误。有没有办法执行“非严格”解析?
例子:
>> 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"}
>>
(我尝试使用正则表达式在解析之前添加引号,但无法使其完全正常工作)。
最佳答案
如果除此之外的数据格式非常好,一个简单的正则表达式就可以做到:
irb(main):009:0> '{name:"hello", age:"23"}'.gsub(/([a-z]+):/, '"\1":')
=> "{\"name\":\"hello\", \"age\":\"23\"}"
https://stackoverflow.com/questions/2060356/
相关文章:
java - 序列化对象时如何让 jackson 忽略 get() 方法
android - 如何从 JSONObject 中删除 nameValuePairs 键?
json - 在 oracle 12c 中以 JSON 形式返回 sql 查询的结果
json - 确保数组中的项目属性在 Json Schema 中是唯一的?
json - 如何在 spark sql 中解析嵌套的 JSON 对象?
java - Spring 3.0 使用 jackson 消息转换器做出 JSON 响应
.net - 为什么 ServiceStack.Text 不默认日期为 iso8601?