相关疑难解决方法(0)

如何以正确的格式写入JSON文件

我在Ruby中创建一个哈希,并希望以正确的格式将其写入JSON文件.

这是我的代码:

tempHash = {
    "key_a" => "val_a",
    "key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Run Code Online (Sandbox Code Playgroud)

以下是生成的文件的内容:

key_aval_akey_bval_b
Run Code Online (Sandbox Code Playgroud)

我正在使用Sinatra(不知道是什么版本)和Ruby v 1.8.7.

如何以正确的JSON格式将其写入文件?

ruby json file

100
推荐指数
3
解决办法
10万
查看次数

在嵌套对象中使用自定义to_json方法

我有一个使用Ruby标准库中的Set类的数据结构.我希望能够将我的数据结构序列化为JSON字符串.

默认情况下,将序列化设置为数组:

>> s = Set.new [1,2,3]
>> s.to_json
=> "[1,2,3]"
Run Code Online (Sandbox Code Playgroud)

在尝试反序列化之前哪个是好的.

所以我定义了一个自定义to_json方法:

class Set
  def to_json(*a)
    {
      "json_class" => self.class.name,
      "data" => {
        "elements" => self.to_a
      }
    }.to_json(*a)
  end

  def self.json_create(o)
    new o["data"]["elements"]
  end
end
Run Code Online (Sandbox Code Playgroud)

哪个效果很好:

>> s = Set.new [1,2,3]
>> s.to_json
=> "{\"data\":{\"elements\":[1,2,3]},\"json_class\":\"Set\"}"
Run Code Online (Sandbox Code Playgroud)

直到我把Set放入哈希或其他东西:

>> a = { 'set' => s }
>> a.to_json
=> "{\"set\":[1,2,3]}"
Run Code Online (Sandbox Code Playgroud)

知道为什么to_json当Set嵌套在另一个对象中时我的自定义不被调用?

ruby serialization json

9
推荐指数
1
解决办法
9599
查看次数

标签 统计

json ×2

ruby ×2

file ×1

serialization ×1