1

我试图从一个字符串 URL 中创建一个 JSON 对象但没有成功

我有这个:

var URL = "http://localhost/index.php?module=search&param1=4";

我需要这个:

var dir = index.php;
var result = {
           module:'search',
           param1:4
             };

谁能帮我写代码?

4

3 回答 3

5

在这里发布链接并不完全正确,但在这种情况下,OP 需要的只是一些用于解析 url 的库。

这里是:http: //james.padolsey.com/javascript/parsing-urls-with-the-dom/

于 2012-09-18T02:11:47.743 回答
3

此函数可以从字符串 URL解析变量和数组:

function url2json(url) {
   var obj={};

   function arr_vals(arr){
      if (arr.indexOf(',') > 1){
         var vals = arr.slice(1, -1).split(',');
         var arr = [];
         for (var i = 0; i < vals.length; i++)
            arr[i]=vals[i];
         return arr;
      }
      else
         return arr.slice(1, -1);
   }

   function eval_var(avar){
      if (avar[1].indexOf('[') == 0)
         obj[avar[0]] = arr_vals(avar[1]);
      else
         obj[avar[0]] = avar[1];
   }

   if (url.indexOf('?') > -1){
      var params = url.split('?')[1];
      if(params.indexOf('&') > 2){
         var vars = params.split('&');
         for (var i in vars)
            eval_var(vars[i].split('='));
      }
      else
         eval_var(params.split('='));
   }

   return obj;
}

在你的情况下:

obj = url2json("http://localhost/index.php?module=search&param1=4");
console.log(obj.module);
console.log(obj.param1);

给出:

"search"
"4"

如果要转换"4"为整数,则必须手动进行。

于 2014-01-21T02:00:56.973 回答
1

这个简单的javascript做到了

url = "http://localhost/index.php?module=search&param1=4";
var parameters = url.split("?");
var string_to_be_parsed = parameters[1];

var param_pair_string = string_to_be_parsed.split("&");
alert(param_pair_string.length);
var i = 0;
var json_string = "{"

for(;i<param_pair_string.length;i++){
var pair = param_pair_string[i].split("=");
if(i < param_pair_string.length - 1 )
 json_string +=  pair[0] + ":'" + pair[1] + "',";
else
 json_string +=  pair[0] + ":'" + pair[1] + "'";
}

json_string += "}";
alert(json_string);
于 2012-09-18T02:57:41.310 回答