【问题标题】:Javascript - Parse a stringified arrays of stringsJavascript - 解析字符串的字符串数组
【发布时间】:2020-06-21 19:07:12
【问题描述】:

我有一个这样的字符串:

a= "['url1','url2','url3']"

来自服务器,我想将其转换为数组,例如:

arr = ["url1","url2","url3"]

但JSON.parse 似乎没有工作并给出以下错误:

SyntaxError: Unexpected token ' in JSON at position 1

提前致谢。

【问题讨论】:

  • 在 JSON 中,字符串必须用双引号表示。与其试图找到一个 hacky 解决方法,不如修复服务器以使其发送有效的 JSON?
  • 我想你打错了,但你肯定是指JSON.parse而不是JSON.stringify?
  • 那么这个数组的有效 json 格式是什么?
  • "[\"url1\",\"url2\",\"url3\"]" 将是有效的。但是你永远不应该尝试自己构建一个 JSON 字符串。始终使用内置工具,例如 PHP 中的 json_encode 或 JS 中的 JSON.stringify
  • 这能回答你的问题吗? Parsing string as JSON with single quotes?

标签: javascript arrays json ecmascript-6


【解决方案1】:

您需要将单引号替换为双引号。实现此目的的一种简单方法是用转义引号替换它们,如下所示:

let validJSON = a.replace(/'/g, "\"")

JSON.parse(validJSON)

【讨论】:

    【解决方案2】:

    您的字符串需要用单引号括起来才能使 JSON.parse 在本示例中正常工作,并且 json 中的字符串表示也按照标准使用双引号。

    
    JSON.parse('["url1","url2","url3"]')
    
    

    【讨论】:

      【解决方案3】:

      尝试使用此代码:

      a = "['url1','url2','url3']"
      urls = a.split(',')
      arr = urls.map(url => url.replace(/'|\[|\]/g, ''))
      
      console.log(arr) // ["url1", "url2", "url3"]
      

      https://jsfiddle.net/z1frh8ys/

      【讨论】:

        猜你喜欢
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多