【问题标题】:How to convert complicated string to array ruby?如何将复杂的字符串转换为数组 ruby​​?
【发布时间】:2016-04-15 18:48:17
【问题描述】:

我有一个字符串可以说:

str = "[[{/"a/":/"1/"},{/"b/":/"2/"},{/"c/":/"3/"}]]"

我需要的是一个哈希数组:

[[{/"a b/":/"1/"},{/"b c/":/"2/"},{/"c d/":/"3/"}]].

如果我使用拆分,那么它也不会提供所需的解决方案。 请帮忙。

【问题讨论】:

  • 你的意思是“哈希数组”吗? [[{/"a b/":/"1/"},{/"b c/":/"2/"},{/"c d/":/"3/"}]] 不是语法上有效的“字典”或哈希数组。
  • 我的错,我的意思不仅仅是哈希数组。
  • 在语法上仍然无效。
  • 它是一个 json,我需要遍历每个哈希,这就是为什么需要它是数组格式而不是字符串
  • "[[{/"a/":/"1/"},...]]" 还是"[[{\"a\":\"1\"},...]"?如果是后者,那就是 JSON。

标签: arrays ruby string


【解决方案1】:

假设你有一个 JSON 字符串,那么你需要做的就是require "json"arr = JSON.parse(str)。在下面的代码中,我已将您的字符串更正为有效的 JSON:

require "json"

str = "[[{\"a b\":\"1\"},{\"b c\":\"2\"},{\"c d\":\"3\"}]]"
arr = JSON.parse(str)
# => [ [ { "a b" => "1" }, { "b c" => "2" }, { "c d" => "3" } ] ]

请注意,您的 JSON 由一个包含单个元素的数组组成,该数组本身就是一个包含三个元素的数组。要仅获取“内部”数组,请像处理任何数组一样:

inner_arr = arr[0]
# => [ { "a b" => "1" }, { "b c" => "2" }, { "c d" => "3" } ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 2014-10-16
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多