" decodeURIComponent" JSON列表中的项目

时间:2015-03-18 15:47:02

标签: javascript jquery json

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

请参阅下面的代码段

我的目标:

  • 我想将Andy%2Peters改为“Andy Peters”

  • 我不想使用密钥名称将每个项目称为“this。 product_model ”。

$(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));
  }
};
.console-line {
  font-family: console;
  margin: 2px;
}
<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>

由于

1 个答案:

答案 0 :(得分:2)

&#13;
&#13;
$(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));
  }
};
&#13;
.console-line {
  font-family: console;
  margin: 2px;
}
&#13;
<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>
&#13;
&#13;
&#13;

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

  

我不知道这是否仅用于演示目的,但一般而言:覆盖控制台是一个坏主意。