【问题标题】:'JSON.parse' replaces ':' with '=>''JSON.parse' 将 ':' 替换为 '=>'
【发布时间】:2018-12-30 09:14:30
【问题描述】:

我有一个字符串:

{"name":"hector","time":"1522379137221"}

我想将字符串解析成 JSON 并期望得到:

{"name":"hector","time":"1522379137221"}

我在做:

require 'json'
JSON.parse

产生这个:

{"name"=>"hector","time"=>"1522379137221"}

谁能告诉我如何保留:?我不明白为什么它会添加=>

【问题讨论】:

  • 它将您的字符串转换为哈希。这可能就是你想要的。 (您不会将字符串“解析为 JSON”——JSON 是一种字符串格式。您可以将 JSON 字符串解析为您可以使用的内容。)
  • 我需要将 json 解析输出推送到接受 : 而不是 => 的外部 api 端点。你能告诉我在哪里可以看到:=>之间的区别
  • 如果您需要将 JSON 发送到外部 API,为什么要将其转换为非 JSON?直接传递 JSON 字符串即可。
  • { "a": 1 }{ :"a" => 1 } 相同,与{ :a => 1 } 相同。不管你如何定义它,Ruby 都会以第二种或第三种形式返回它。
  • 您确定要将您的字符串解析为 JSON吗?您的示例建议您希望通过将其解析为 as JSON. 将其转换为哈希。

标签: json ruby


【解决方案1】:

JSON 没有符号类。因此,JSON 数据中没有任何内容对应于 Ruby 符号。在像JSON.parse 这样从 JSON 到 Ruby 的简单转换下,输出中不能有符号。

【讨论】:

    【解决方案2】:

    解析 json 数据后,您应该可以在您使用的编程语言中看到它。

    Ruby 使用=> 将键与哈希中的值分开(而 json 使用:)。

    因此,ruby 输出是正确的,并且数据已准备好供您在代码中进行操作。当您将哈希转换为 json 时,json 库会将 => 转换回 :

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 2018-06-04
      • 2015-01-14
      • 1970-01-01
      • 2020-12-30
      • 2016-06-07
      相关资源
      最近更新 更多