首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript不转义?

JavaScript不转义?
EN

Stack Overflow用户
提问于 2013-04-26 00:03:48
回答 2查看 359关注 0票数 0

在解析到这样的对象之前,我转义了&和=:

代码语言:javascript
复制
var obb = parseJSON('{"' + text.replace(/&/g, "\",\"").replace(/=/g,"\":\"") + '"}');

当对象被创建时,我得到:

代码语言:javascript
复制
obb.name
obb.date
obb.text

在obb.text内部,我想恢复上面所做的转义。

我试过了:

代码语言:javascript
复制
text.replace(/\&/g, "&").replace(/\=/g, "=")

当我在obb.text上运行以下命令时

代码语言:javascript
复制
obb.text = decodeURIComponent(escape(obb.text));

我收到解析错误

但似乎不起作用

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-26 00:43:03

只要您的text参数始终位于字符串的末尾,您就可以这样做:

代码语言:javascript
复制
var obb = {};
obb.name = text.match(/name=([^&]+)/)[1];
obb.date = text.match(/date=([^&]+)/)[1];
obb.text = text.match(/text=(.+)/)[1];
票数 1
EN

Stack Overflow用户

发布于 2013-04-26 00:38:20

与其祈祷您的输出数据不包含任何会导致JSON解析器吐出的内容,不如考虑基于HTTP RFC参数解析的这种方法。RFC RFC (2616)规定了以下规则:

  • 所有字段由&
  • 分隔所有字段名称都在=之前,值在=之后,value是可选的
  • []表示“作为数组的另一个元素”,

他们还试探性地提出了以下规则,我将为您提供一个选择:-不带[]的参数在提交时会覆盖其以前的版本(并非所有way服务器都遵循此规则,顺便说一句,这是HTTP碎片/污染攻击的问题)

我们将按照这个确切的结构进行解析,假设内容已经正确地进行了字符编码。代码的开头应如下所示:

代码语言:javascript
复制
var myObj = {};
var k = myPostbackContent.split("&");
for (var i = 0; i < k.length; i++) {
  var kinfo = k[i].split("=");
  var key = kinfo[0];
  if (kinfo[1] !== undefined) {
     var value = kinfo[1];
  };
  if (key.substr(-2) == "[]") {
     key = key.substr(0,key.length-2);
     if (myObj[key] === undefined) myObj[key] = [];
     if (myObj[key] instanceof Array) myObj[key].push(value);
  }
  else {

以下部分取决于您的假设:

  • 如果希望元素相互覆盖,请在else中输入以下版本:

myObjkey =value;

  • 如果您希望元素的第一个实例具有优先级,请放置以下内容:

if (myObjkey === undefined) myObjkey =value;

  • 如果像IIS一样,您希望将元素自动附加到由,分隔的字符串中,请使用以下命令:

if (myObjkey.length) myObjkey += ",";myObjkey += value;

我已经构建了一个小脚本来向您展示这三个脚本是如何工作的。如果这不是你要找的,一定要让我知道。顺便说一句,默认行为是“覆盖”。

顺便说一下,此方法可以反向应用,以便从对象转换为URI编码的字符串。只需循环遍历对象的属性并使用key=value,使用&.连接所有元素

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16219597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档