将字符串转换为 JSON 有效格式

时间:2021-07-14 13:15:18

标签: ruby-on-rails json regex

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

1 个答案:

答案 0 :(得分: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)

它适用于这 2 个字符串,但不确定其他响应的样子。