【问题标题】:Convert not-JSON string to JSON [closed]将非 JSON 字符串转换为 JSON [关闭]
【发布时间】:2016-12-28 07:51:57
【问题描述】:

如何使用 PHP(或 Python)将描述对象的字符串转换为 JSON 字符串?

例如:转换这个(不是一个有效的 JSON 字符串):

var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"

进入这个:

str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'

如果可能,我希望避免使用 eval()。

【问题讨论】:

  • 最好创建新数组并使用 php 上的此函数将此数组更改为 json json_encode

标签: php python json string


【解决方案1】:

几个正则表达式替换操作应该可以做到:

var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";

var json = str.replace(/(\w+):/g, '"$1":')
              .replace(/'/g, '"');

console.log(json);

也就是说,首先替换一个或多个单词字符后跟冒号 (/(\w+):/g) 的任何实例,然后将所有单引号更改为双引号。

【讨论】:

  • 请帮助我使用 PHP 或 Python
  • 不,抱歉,我并没有真正使用 PHP 或 Python,但我认为两者都可以让您进行等效的基于正则表达式的替换。如果你不想要 JavaScript,为什么要用“JavaScript”标记问题?
【解决方案2】:

python3

import re

s = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
# ' => "
s = re.sub(r"'", '"', s)  # or s = s.replace("'",'"')
# key: => "key":
s = re.sub(r'(\w+):', '"\g<1>":', s)
print(s)
# { "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }

【讨论】:

    猜你喜欢
    • 2014-01-08
    • 1970-01-01
    • 2021-11-04
    • 2012-10-19
    • 2013-11-11
    • 2018-06-28
    • 1970-01-01
    • 2021-08-24
    • 2012-10-06
    相关资源
    最近更新 更多