gpt4 book ai didi

ruby - 单个值上的 to_json 无法解析回来

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:00 27 4
gpt4 key购买 nike

我正在尝试实现 wysihml5在使用 Activerecord 的 sinatra 应用程序中。

富文本编辑器运行良好,当我提交表单时,我将正确的 html 发布到 Controller :

pry:> request.params
=> {"title" => "title text",
"content" => "<b>bold text</b><br><i>italic text</i>",
"_wysihtml5_mode" => 1
}

然后,我从 request.params 中删除哈希条目“_wysihtml5_mode”以创建数据库条目,然后我将内容转换为 json:

pry:> request.params.delete("_wysihtml5_mode")
=> 1
pry:> request.params["content"].to_json
=> "\"\\u003Cb\\u003Ebold text\\u003C/b\\u003E...
pry:> class.create(request.params)

问题是我无法像开始时那样取回我的值(value):

pry:> class.last.content
=> "\"\\u003Cb\\u003Ebold text\\u003C/b\\u003E...
pry:> JSON.parse(class.last.content)
JSON::ParseError: 743: unexpected token at '"\\u003Cb\\u003Ebold text\\u003C/b\\u003E...

我怎样才能将这个 unicode 字符恢复为它们的 utf-8 样式(我可能是错的,我对字符表不满意)。似乎在转换为json的过程中,在开头添加了一个":

                    "<b>bold => "\"\\u003Cb\\u003Ebold

这可能是问题所在?有什么想法吗?

最佳答案

问题来自对单个值调用 to_json。这不会产生完整的 JSON 表示。以下是一些示例:

"hello".to_json
=> "\"hello\""

JSON.parse("hello".to_json)
=> JSON::ParseError: 743: unexpected token at...

nil.to_json
=> "null"

JSON.parse(nil.to_json)
=> JSON::ParseError: 743: unexpected token at...

幸运的是,JSON 解析器带有允许解析单个值的“怪癖模式”:

"hello".to_json
=> "\"hello\""

JSON.parse("hello".to_json, {:quirks_mode => true})
=> "hello"

nil.to_json
=> "null"

JSON.parse(nil.to_json, {:quirks_mode => true})
=> nil

我不确定 :quirks_mode 到底在做什么,也许有人可以解释一下?

关于ruby - 单个值上的 to_json 无法解析回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com