Javascript JSON.stringify上的字符串数组输出unicode字符

Javascript JSON.stringify上的字符串数组输出unicode字符,javascript,java,json,unicode,stringify,Javascript,Java,Json,Unicode,Stringify,我正在尝试发送一个字符串数组作为get请求的参数 console.log(arrayOfStrings); //Prints ["28"] var ids = JSON.stringify(arrayOfStrings); console.log(ids); //Prints ["\u00002\u00008"] $http.get('do_staff_search', { params:{'ids': ids } }).then(successHandler); 但是,当我字符串化数

我正在尝试发送一个字符串数组作为get请求的参数

console.log(arrayOfStrings); //Prints ["28"]
var ids = JSON.stringify(arrayOfStrings);
console.log(ids); //Prints ["\u00002\u00008"]   

$http.get('do_staff_search', { params:{'ids': ids } }).then(successHandler);
但是,当我字符串化数字数组时,会得到
[“\u00002\u00008”]
,这会导致服务器上出现错误
java.lang.NumberFormatException:对于输入字符串:▯2.▯8“
,每个数字前面有两个矩形块

如果我使用Google Chrome的控制台,创建相同的数组并将其字符串化,则输出为
“[“28”]”

这似乎是一个微不足道的问题,但我在堆栈溢出方面找不到类似的问题

更新

我做了一些测试,结果证明@MinusFour是正确的。它是一个字符串数组,而不是我假设的整数数组(该数组是另一个请求的有效负载)

更新2

我尝试使用以下函数将字符串数组转换为整数数组:

function arrayOfNums(arr){
    var  newArr = [];
    for (var i = 0; i < arr.length; i++) {
        newArr[i] = parseInt(arr[i]);
    };
    return newArr;
}
功能阵列(arr){
var newArr=[];
对于(变量i=0;i
但是parse Int为每个元素返回NaN。现在我想知道我的字符串是否存在编码问题,这可能是因为我是从我之前发出的服务器请求中得到它们的。我找到了,但我不确定如何转义任何无效字符


与某些后台一样,该数组作为CLOB存储在SQL DB上。我在服务器端使用Spring和Jackson发回一个JSON对象,在这个对象中我有一个有问题的数组。虽然我可以访问服务器上的代码,但我不能真正更改它,因为还有其他应用程序向它发出请求

字符串似乎带有一些从AJAX请求返回的无效字符,如前所述

因此,在通过
JSON.stringify
运行数组之前,我将按如下方式清理每个字符串:

function arrayOfNums(arr){
    var numberPattern = /\d+/g;
    var  newArr = [];
    for (var i = 0; i < arr.length; i++) {
        newArr[i] = parseInt(arr[i].match( numberPattern ).join(""));
    };
    return newArr;
}
功能阵列(arr){
var numberPattern=/\d+/g;
var newArr=[];
对于(变量i=0;i
因为每个数字前面都有无效字符,所以在匹配模式后,我使用join将所有数字连接在一起


与其说是一个永久性的解决方案,不如说是一种变通办法,我只是希望这能帮助处于类似情况的人

嗯,我觉得你的问题有点让人困惑

这可能是因为您正在
string
数组上应用
JSON.stringify()
。。这就是我在你的代码中看到的。。(请检查!)

进行更改:尝试将其更改为
整数
数组

例如:

arrayOfStrings = [28];
然后检查

下面是我测试的另一个示例:

var test_arr = [1, 2, 3, 5]; // array of integers
console.log(test_arr); // will print: [1, 2, 3, 5] -- an integer array

var test_ids = JSON.stringify(test_arr);
console.log(test_ids); // // will print: "[1,2,3,5]" -- an string

var test_parse = JSON.parse(test_ids);
console.log(test_parse ); // will print: [1, 2, 3, 5] -- an integer array
只是一个关于
JSON.parse()
vs
JSON.stringify()
链接的指南:
……您是否正在创建这样的硬编码数组
[28]
?(就像你共享的代码)好吧,我在Firefox上看到了
“[28]”
,你在使用哪个环境?看起来你编写的代码编辑器有些东西。好像你有看不见的特殊角色。看来你有这个问题:@pedrohohelcarvalho,既然这不是真正的代码,我们就找不到真正的问题。我最好的猜测是数组的元素不是数字,而是字符串。再说一次,没有人能说出来,因为我们没有真正的代码。我最终做到了这一点(见更新2)。但是当我试图解析数组中的字符串时,我得到了NaN,所以我不得不使用正则表达式从字符串中提取数字(参见我的答案)