使用双引号(“)作为值将 JavaScript 对象转换为 Json

Posted

技术标签:

【中文标题】使用双引号(“)作为值将 JavaScript 对象转换为 Json【英文标题】:Coverting a JavaScript Object in to Json with a double quote(") as a value 【发布时间】:2018-03-13 13:59:42 【问题描述】:

我在转换对象时遇到问题

var obj="Id":"1-AQC1Y1S","Root Order Item Id":"1-AQC1RSA","SC Long Description":"6.5" TXL/Qn/";

在上面的对象中,我们在字符串中有一个类似 6.5" 的值。 请帮帮我。 提前致谢。

【问题讨论】:

无关:那不是数组。 转义引用:\" var array1="Id":"1-AQC1Y1S","Root Order Item Id":"1-AQC1RSA","SC Long Description":"6.5\" TXL/Qn/"; console.log(array1["SC Long Description"]); 你需要转义双引号,很简单。 How to escape double quotes in JSON的可能重复 @Ele 抱歉我的错误更正 【参考方案1】:

转义如下:6.5\"

再说一遍,这不是一个数组,而是一个对象

var obj="Id":"1-AQC1Y1S","Root Order Item Id":"1-AQC1RSA","SC Long Description":"6.5\" TXL/Qn/";
console.log(obj["SC Long Description"])

假设这是固定结构,您可以使用正则表达式捕获组,并在找到组 "SC Long Description" 时进行替换:

var str = '"Id":"1-AQC1Y1S","Root Order Item Id":"1-AQC1RSA","SC Long Description":"6.5" TXL/Qn/"'

var found = false;
str = str.replace(/(".*?")(?!\)/g, function(match) 
  if (found && match.endsWith('"')) return match.substring(0, match.length - 1) + '\\"';
  found = found || match === '"SC Long Description"';
  
  return match;
);

var obj = JSON.parse(str);
console.log(obj["SC Long Description"]);

【讨论】:

@AddalaShivateja 您是从第三方服务获取该对象作为字符串? 是的,我把它作为字符串@Ele【参考方案2】:

你需要转义双引号,很简单。

var array1 = 
  "Id": "1-AQC1Y1S",
  "Root Order Item Id": "1-AQC1RSA",
  "SC Long Description": "6.5\" TXL/Qn/"
;
console.log(array1["SC Long Description"]);

【讨论】:

我不能手动转义字符,还有其他方法吗?我将从另一个程序中以字符串形式获取该输入,因此字符串值将发生变化! @AddalaShivateja 你的对象是什么样子你能举个例子吗?

以上是关于使用双引号(“)作为值将 JavaScript 对象转换为 Json的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中单引号,双引号和反引号的区别

jsp 单双引号?

sql注入逃逸双引号转义

PHP中的双引号和单引号的应用

VBA中字符变量双引号如何去除?我的变量赋值使用时因为是字符变量自带了双引号导致赋值后无法识别

浅谈PHP中单引号和双引号到底有什么区别呢?