将字符串转换为 JSON 有效格式
Posted
技术标签:
【中文标题】将字符串转换为 JSON 有效格式【英文标题】:Convert string to JSON valid format 【发布时间】: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)
。
【参考方案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)
它适用于这两个字符串,但不确定其他响应如何。
【讨论】:
以上是关于将字符串转换为 JSON 有效格式的主要内容,如果未能解决你的问题,请参考以下文章
如何将有效json中的字符串json转换为有效的json python
如何在 PHP 中将非 json 字符串转换为有效的 json 字符串