【问题标题】:Convert string to JSON valid format将字符串转换为 JSON 有效格式
【发布时间】:2021-09-23 11:27:41
【问题描述】:

我正在接收来自外部服务的响应数据,需要解析接收到的字符串。问题是,一些字符串键/值使用' 而不是"。我尝试的第一个解决方案是使用 gsub 并将所有 ' 替换为 " 但我收到了另一个问题 - 一些响应值包含 ' 作为单词分隔符,它看起来像这样 - "{'text': \"Hi there-Thanks for writing in. Unfortunately, I don't\"}",所以当我替换 ' JSON 仍然无效。 我需要将其转换为有效格式,例如- "{\"text\": \"Hi there-Thanks for writing in. Unfortunately, I don't\"}"

【问题讨论】:

  • 如果您编写输入、函数、输出的代码示例,将会有很大帮助。要将 JSON 字符串转换为对象,我会选择:obj = JSON.parse(string),然后转换回字符串:JSON.pretty_generate(obj)

标签: ruby-on-rails json regex


【解决方案1】:

这些响应无法解析为 JSON 的原因是它们不是 JSON 字符串。这不是“替换”引号的问题,这些字符串缺少对 JSON 解析至关重要的引号。

下面是它们应该看起来很容易解析:

x = {text: "Hi there-Thanks for writing in. Unfortunately, I don't"}.to_json 
# => "{\"text\":\"Hi there-Thanks for writing in. Unfortunately, I don't\"}"
JSON.parse(x) # should work ok

你可以试试YAML.load:

y = "{'text': \"Hi there-Thanks for writing in. Unfortunately, I don't\"}"
YAML.load(y)

z = "{\"text\": \"Hi there-Thanks for writing in. Unfortunately, I don't\"}"
YAML.load(z)

它适用于这两个字符串,但不确定其他响应如何。

【讨论】:

    猜你喜欢
    • 2019-04-01
    • 1970-01-01
    • 2013-02-04
    • 2020-09-09
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多