将字符串转换为 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

json字符串转对象,遇到空字符串会抛异常吗

如何在 PHP 中将非 json 字符串转换为有效的 json 字符串

有没有办法将 json 对象转换为 json l 文件

将 JSON 字符串转换为 NSDictionary 时,并非所有键都有效

Java 正则表达式将字符串转换为有效的 json 字符串