首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON列表中的"decodeURIComponent“项

JSON列表中的"decodeURIComponent“项
EN

Stack Overflow用户
提问于 2015-03-18 15:47:02
回答 1查看 4.1K关注 0票数 2

我希望解析JSON列表中的所有项并使用函数解码,删除HTML格式的空格%20等。

见下面的片段

我的目标是:

  • 我想把Andy%2 2EPeters改为"Andy Peters“
  • 我不想用键名将每一项称为"this.product_model“。

代码语言:javascript
复制
$(document).ready(function() {
  $('.btn').click(function() {
    $(ray).each(function(index) {
      console.log("Item BEFORE Decode : " + index + ": " + $(this).text() + ": " + this.product_model);
      this.index = decodeString(this.item);
      console.log("Item AFTER Decode    : " + index + ": " + $(this).text() + ": " + this.product_model);
    });
  });
});

function decodeString(a) {
  if (typeof a != 'undefined') {
    return decodeURIComponent(a);
  } else {
    return '';
  }
}
var ray = [{
  "product_id": "1",
  "product_model": "Andy%2EPeters",
}, {
  "product_id": "2",
  "product_model": "Tom%2EHanks",
}, {
  "product_id": "1",
  "product_model": "HFJ5G1.5",
}, ];



//console setup 
var consoleLine = "<p class=\"console-line\"></p>";

console = {
  log: function(text) {
    $("#console-log").append($(consoleLine).html(text));
  }
};
代码语言:javascript
复制
.console-line {
  font-family: console;
  margin: 2px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input class="btn" type="button" id="btn" value="Go!">
<div id="console-log"></div>

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-18 15:58:46

代码语言:javascript
复制
$(document).ready(function() {
  $('.btn').click(function() {
         var data = decodeURIComponent(JSON.stringify(ray).replace(/(%2E)/ig, "%20"));
         ray = JSON.parse(data);
    
         $(ray).each(function(){
            console.log(this.product_model);
         })
  });
});
var ray = [{
  "product_id": "1",
  "product_model": "Andy%2EPeters"
}, {
  "product_id": "2",
  "product_model": "Tom%2EHanks"
}, {
  "product_id": "1",
  "product_model": "HFJ5G1.5"
} ];

//console setup 
var consoleLine = "<p class=\"console-line\"></p>";

console = {
  log: function(text) {
    $("#console-log").append($(consoleLine).html(text));
  }
};
代码语言:javascript
复制
.console-line {
  font-family: console;
  margin: 2px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input class="btn" type="button" id="btn" value="Go!">
<div id="console-log"></div>

这使用JSON对象的本机stringify将对象解析为JSON字符串。在解码完成之前,将所有的%2E替换为%20,并最终将其解码到一起。然后将其解析回JavaScript对象。

我不知道这是否只是为了演示目的,但一般来说:覆盖控制台是个坏主意。

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

https://stackoverflow.com/questions/29126518

复制
相关文章

相似问题

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