【问题标题】:How to convert and parse text to JSON [duplicate]如何将文本转换和解析为 JSON [重复]
【发布时间】:2018-10-05 14:23:55
【问题描述】:

我有一个JSON.parse 格式错误的字符串。
它看起来像这样:
user_data = "{'key1':'val','key2':"bad_val with 'quoted' text"}"

我想以某种方式转换它并用JSON.parse() 解析。如果不是因为这个bad_val 简单的replace(/'/g, '"') 会有所帮助,但是我被困住了。正确的转换方法是什么?

【问题讨论】:

  • 这不是一个有效的字符串声明。你的意思是它像user_data = `"{'key1':'val','key2':"bad_val with 'quoted' text"}"`一样表示吗?
  • @CertainPerformance:您的示例有何不同?我只是性格比较了两者,找不到区别。
  • 这个类似 JSON 的字符串是如何生成/检索的?最好的解决方案是更正这个字符串的来源。它不应该产生这种格式
  • @Flater 区别在于` 字符,它也允许在JS 中声明一个字符串,这样在字符串中使用"' 就没有转义问题跨度>
  • 你不应该“修复”字符串,而是修复它的来源。

标签: javascript json parsing


【解决方案1】:

您可以使用 JSON.stringify() 将其转换为 JSON。 例如:

var user_data = "{'key1':'val','key2':"bad_val with 'quoted' text"}";
var jsonObj = JSON.stringify(user_data);

它将返回有效的 JSON 格式。

【讨论】:

  • JSON.stringify一个对象到json字符串,如果你在JSON.parse中传递jsonObj你只会得到一个字符串而不是一个对象
【解决方案2】:

我假设 user_data 是格式错误的 JSON,无法使用 JSON.parse 解析。如果无法更正该字符串,那么作为一个简单的解决方法,您可以尝试eval

let convertedUserData;
eval('convertedUserData = ' + user_data);

不过,这意味着在该user_data 字符串中执行脚本,因此请注意安全问题。同样,完全不推荐

【讨论】:

  • 你还应该提到使用eval的含义;它增加了严重的安全问题。
  • 好点,谢谢str,已添加
猜你喜欢
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 2019-08-06
  • 2020-12-06
  • 2015-10-18
  • 2012-10-20
相关资源
最近更新 更多