当前位置: 首页 > 面试题库 >

正则表达式可在JavaScript中的键周围添加双引号

宋臻
2023-03-14
问题内容

我正在使用jQuery的getJSON函数发出请求并处理JSON响应。问题是我返回的响应格式错误,无法更改。响应如下所示:

{
    aNumber: 200,    
    someText: '\'hello\' world',
    anObject: {
        'foo': 'fooValue',
        'bar': '10.0'
    } 
}

要成为有效的JSON,它应如下所示:

{
    "aNumber": 200,    
    "someText": "'hello' world",
    "anObject": {
        "foo": "fooValue",
        "bar": "10.0"
    } 
}

我想将返回的文本更改为有效的JSON对象。我已经使用JavaScript
replace函数将单引号转换为双引号,将转义的单引号转换为单引号,但是现在我仍然想方设法找出在键值周围添加引号的最佳方法。

例如,我将如何更改foo: "fooValue""foo":"fooValue"?是否有可以使这变得容易的正则表达式?

提前致谢!


问题答案:

编辑 -首先要指出的是,这不是可以使用正则表达式解决的问题。

区分作为序列化形式的JSON表示法和JavaScript对象常量表示法很重要。

这个:

{ x: "hello" }

是一个完全有效的JavaScript值(一个表达式片段),因此:

var y = { x: "hello" };

与您完全相同的结果:

var y = { "x": "hello" };

换句话说,在任何一种情况下,“ y”的值将完全相同。完全相同,以致无法分辨出这两个常数中的哪一个用于初始化“ y”。

现在,如果要执行的操作是将包含JavaScript样式“ JSON简写” 的 字符串(
不带引号)转换为有效的JSON,则唯一要做的就是解析它,并在属性名称周围用引号将字符串重新构建。也就是说,您将不得不编写自己的“轻松”
JSON解析器,以应付未加引号的标识符作为属性名称,或者必须找到可以处理这种宽松语法的现成解析器。

在您的情况下,看起来好像一旦有了“松弛”解析器,就可以完成。您应该不需要翻译。值得庆幸的是,您的“无效”
JSON响应完全可以由JavaScript本身解释,因此,如果您信任数据源(那是一个 很大的 “ if”),则应该可以使用“
eval()”对其进行评估。



 类似资料:
  • 问题内容: 我需要有效的JSON格式来请求ES。我有一个像 但是当我尝试使用时出现错误,因为我的字符串应该像 所以我的问题,有什么解决方案可以在字符串的键和值周围添加双引号? 谢谢 问题答案: 也许你可以使用: 这是 注意 在我使用的字符组 和中,也许您需要其他字符,以便可以使用另一个

  • 我正在尝试匹配这些字符串: 单引号中不能包含双引号 双引号中没有双引号 单引号内的单引号-单引号只能包含内部的文本 我想出了以下正则表达式: 但它不起作用。

  • 我很抱歉,如果我错过了关闭的第一个帖子的细节。我在字符串中添加了双引号内的逗号,并将字符串添加到变量中。我不能简单地用逗号分开。 原帖 基本上,我需要把一条线分成一个数组。但当“双引号”中的“双引号”出现时,我遇到了错误。示例行如下所示: “123”、“str”、“456”、“2021年10月8日上午7:44:47”、“str”、“str”、“str”、“str”、“0”、“789”、“1”、“1

  • 本文向大家介绍使用JavaScript正则表达式如何去掉双引号,包括了使用JavaScript正则表达式如何去掉双引号的使用技巧和注意事项,需要的朋友参考一下 最近接了一个项目,项目需求需要用js正则表达式过滤掉页面文本域中值得双引号,其实解决办法很简单,下面把我写的代码分享给大家,有同样需求的朋友可以参考下。 具体的解决代码如下: 以上代码经过IE8浏览器的测试。希望对以后遇到此类似问题的朋友有

  • 问题内容: 我需要使用正则表达式,检查一个字符串以a开头 的双引号 字符(),用两端 的双引号 字符了。 问题是我不能使用 双引号 字符,导致混淆。还有其他方法可以在正则表达式中或一般在字符串中表示 双引号 字符吗? 问题答案: 首先,双引号字符在regex中没什么特别的-它只是另一个字符,因此 从regex的角度来看 不需要转义。 但是,由于Java使用双引号 分隔 字符串常量,因此,如果要在J

  • 这是我之前问题的后续。我意识到我需要更具体地说明我的regex案例,以获得适用于我的案例的答案。 我已经与这个正则表达式斗争了很长一段时间(也使用我上一个问题的答案),我似乎无法构建我需要的东西。 我需要将所有字符串中出现的两个重复出现的单引号替换为(因此字符串内部意味着单引号)。这是因为在一种语言(语法)中,字符串中的引号使用<code>‘转义。 这里有一个例子(实际的例子可以包含用< code