如何使用jQuery将查询字符串或JSON对象映射转换为单个JSON对象?

前端之家收集整理的这篇文章主要介绍了如何使用jQuery将查询字符串或JSON对象映射转换为单个JSON对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于此示例,假设我在表单中有一个月份列表,每个月份旁边都有一个复选框.我正在寻找帮助做两件事情中的任何一件事:

>转换查询字符串(例如“January = on& March = on& September = on”)或
>转换对象地图:[{January:’on’},{March:’on’},{September:’on’}]

单个JSON对象:{January:’on’,March:’on’,9月:’on’}

我意识到第一个映射已经是JSON,但是我希望它不是对象数组,而是一个JSON对象.我可以使用$(‘form’)构建地图.serializeArray();我可以用$(‘form’)构建查询字符串.serialize();.

jQuery API中.serialize()的实现很简单:

  1. serialize: function() {
  2. return jQuery.param(this.serializeArray());
  3. },

这就是我可以处理第一个或第二个答案的原因.

我想这样做的原因是因为我从PrototypeJS切换到jQuery,而在PrototypeJS中,这很简单:

  1. Object.toJSON(Form.serializeElements($('myform'),true));

那么,有没有人知道一个JSON插件(我想坚持只有jQuery)可以轻松地做到这一点,或者知道一个简单的方法来实现我正在寻找的结果?谢谢!

解决方法

你可以试试这个
  1. String.prototype.QueryStringToJSON = function () {
  2. href = this;
  3. qStr = href.replace(/(.*?\?)/,'');
  4. qArr = qStr.split('&');
  5. stack = {};
  6. for (var i in qArr) {
  7. var a = qArr[i].split('=');
  8. var name = a[0],value = isNaN(a[1]) ? a[1] : parseFloat(a[1]);
  9. if (name.match(/(.*?)\[(.*?)]/)) {
  10. name = RegExp.$1;
  11. name2 = RegExp.$2;
  12. //alert(RegExp.$2)
  13. if (name2) {
  14. if (!(name in stack)) {
  15. stack[name] = {};
  16. }
  17. stack[name][name2] = value;
  18. } else {
  19. if (!(name in stack)) {
  20. stack[name] = [];
  21. }
  22. stack[name].push(value);
  23. }
  24. } else {
  25. stack[name] = value;
  26. }
  27. }
  28. return stack;
  29. }

请求参数

  1. href="j.html?name=nayan&age=29&salary=20000&interest[]=PHP&interest[]=jquery&interest[1]=python&interest[2]=Csharp&fan[friend]=rangan&fan[family]=sujan&sports[1]=cricket&sports[2]=football";

用法

  1. alert(href.QueryStringToJSON().toSource())

产量

  1. ({name:"nayan",age:29,salary:20000,interest:["PHP","python","Csharp"],fan:{friend:"rangan",family:"sujan"},sports:{1:"cricket",2:"football"}})

猜你在找的jQuery相关文章