【问题标题】:How do I keep the "&" in a string when I parse JSON in Ruby?在 Ruby 中解析 JSON 时,如何将“&”保留在字符串中?
【发布时间】:2015-10-13 10:20:24
【问题描述】:

我找不到一个简单的答案,所以我转向 Stack Overflow。

我有一个名为“flavor.json”的 JSON 文件,如下所示:

{"flavor" : "Cookies & Cream"}

在 ruby​​ 中,我想创建一个名为“ice_cream_flavor.json”的新 JSON 文件,如下所示:

{"ice cream flavor" : "Cookies & Cream"}

这是我的代码...

json = JSON.parse(File.read("flavor.json"))
new_json = {"ice cream flavor" => json["flavor"]}
File.write("ice_cream_flavor.json", new_json.to_json)

但是,新创建的 ice_cream_flavor.json 文件看起来像这样:

{"ice cream flavor" : "Cookies \u0026 Cream"}

问题:
我不想要\u0026。我想要 &。我该怎么做?

【问题讨论】:

  • 我无法重现您的结果。您使用的是哪种 Ruby?
  • 我无法复制它。你能告诉我们版本(JSON::VERSION)吗?
  • 它可以随心所欲地工作(使用 &)。 Windows 7、ruby 1.9.3 和 ruby​​ 2.1.6
  • & 什么时候变成\u0026readparseto_jsonwrite?
  • 这很奇怪......我不确定你们为什么不能复制它。 Rails 版本:3.2.19 Ruby 版本:2.1.4 json gem:1.8.3

标签: ruby json encoding


【解决方案1】:

我不知道你做错了什么,但我试过了,效果很好,好吧,假设你的文件 flavor.json 位于路径:C:\flavor.json

这就是我所做的(只是你的代码),我添加了 require 方法来加载 Json 类。

require 'rubygems'
require 'json'
json = JSON.parse(File.read("C:\\flavor.json"))
new_json = {"ice cream flavor" => json["flavor"]}
File.write("C:\\ice_cream_flavor.json", new_json.to_json)

结果如你所愿:

 if you check the file  `flavor.json` its content => {"flavor" : "Cookies & Cream"}
 if you check the file  `ice_cream_flavor.json` its content => {"ice cream flavor":"Cookies & Cream"}

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2011-05-20
    • 2016-12-05
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多