如何在查询字符串中解析2D数组?

时间:2014-09-18 05:02:15

标签: jquery scala web-applications playframework

我有以下jQuery调用(我无法改变):

$.ajax({    url: "http://localhost/lookup-coord",
            jsonp: 'cb',
            dataType: 'jsonp',
            data: {'coord' : [[1,1],[1,2],[1,3]]},
            success: function(response) {
                console.log("Got the response: " + response);
            }
      });

我的Web应用程序收到以下查询字符串:

coord[0][]=1&coord[0][]=1&coord[1][]=1&coord[1][]=2&coord[2][]=1&coord[2][]=3

我想知道如何将该查询字符串解析为Scala Play中的数组。是否有开箱即用的方式来做到这一点?

3 个答案:

答案 0 :(得分:0)

转换为数组

scala>  val str = "coord[0][]=1&coord[0][]=1&coord[1][]=1&coord[1][]=2&coord[2][]=1&coord[2][]=3"
str: String = coord[0][]=1&coord[0][]=1&coord[1][]=1&coord[1][]=2&coord[2][]=1&coord[2][]=3

scala> val it = str.split("&").map(x => x.split("=")(1)).grouped(2)
it: Iterator[Array[String]] = non-empty iterator

scala> it.map(array => array.mkString("[",",","]")).mkString("[",",","]")
res0: String = [[1,1],[1,2],[1,3]]

或者:

scala> str.split("&").map(x => x.split("=")(1)).grouped(2).toList
res2: List[Array[String]] = List(Array(1, 1), Array(1, 2), Array(1, 3))

答案 1 :(得分:0)

根据我的理解,您希望查询字符串如下:

http://localhost/lookup-coord/[[1,1],[1,2],[1,3]

一种简单的方法是使用 JSON.stringify()

var arr = [[1,1],[1,2],[1,3]];
$.ajax({    url: "http://localhost/lookup-coord",
        jsonp: 'cb',
        dataType: 'jsonp',
        data: {'coord' : JSON.stringify(arr)},
        success: function(response) {
            console.log("Got the response: " + response);
        }
  });

您可以使用以下链接作为参考:MDN - JSON.stringify

答案 2 :(得分:-1)

如果要将数组发送到给定文件(在这种情况下为http://localhost/lookup-coord) 可能最好的想法就是如下:

// create empty array
var values = [];

// push the values

    values.push(1);
    values.push(2);

// when sending a parameter as an array we have to add [] after the name of the variable 

我们要发送并使用单引号包装变量名称 例如(在这种情况下)

$.post('file.php',{'var[]',values,another-var:val2},function(data){

console.log('this is the retrieved data from the target file');

});

规则很简单 如果你使用jquery http request($.ajax,$.post,$.get)然后
如果变量是一个数组,那么这样做 'var-name[]':values 其他 var-name:single-value