Javascript 将对象数组发送到节点/解析到Json
我正在尝试将对象数组发送到节点。 如果我在不使用stringify的情况下发送它,我将得到一个与我发送的长度相同的数组,但为空Javascript 将对象数组发送到节点/解析到Json,javascript,json,Javascript,Json,我正在尝试将对象数组发送到节点。 如果我在不使用stringify的情况下发送它,我将得到一个与我发送的长度相同的数组,但为空([“”,“”]) 如果我将其与JSON.stringify一起发送,结果如下: {{{“itemNumber”:“13544”,“currentShelf”:“1A1”,“amount”:“1”,“newShelf”:“actionType”:“in”,“whareHouse”:“Main”},{“itemNumber”:“13544”,“currentShelf”:“
([“”,“”])
如果我将其与JSON.stringify一起发送,结果如下:
{{{“itemNumber”:“13544”,“currentShelf”:“1A1”,“amount”:“1”,“newShelf”:“actionType”:“in”,“whareHouse”:“Main”},{“itemNumber”:“13544”,“currentShelf”:“1B1”,“amount”:“1”,“newShelf”:“actionType”:“in”,“whareHouse”:“Main”}:“}
我就是这样发送的:
for (var i=1; i<=m; i++){
itemIdTemp= document.getElementById("itemIdShell"+i).value;
shellTemp= document.getElementById("id_shell"+i).value.toUpperCase();
newShellTemp= document.getElementById("id_shell_new"+i).value.toUpperCase();
shellAmountTemp = document.getElementById("amountShell"+i).value;
itemAmount=0;
let itemData={
itemNumber:itemIdTemp,
currentShelf:shellTemp,
amount:shellAmountTemp,
newShell:newShellTemp,
actionType:direction,
whareHouse:"Main",
};
console.log(itemData);
itemsObject.push(itemData);
}
console.log(itemsObject);
$.post('/itemShell/updateMulti',
JSON.stringify(itemsObject),
function(data){
console.log(data);
});
for(var i=1;i看看这个示例代码
const jsObjectArray = [
{name: "Homer", age:56 },
{name: "Marge", age:50 },
];
const buf = JSON.stringify(jsObjectArray);
console.log("Stringified object: "+buf);
//
// Now convert it back to an object
//
const newObject = JSON.parse(buf);
console.log("Reconstituted object: "+newObject);
它也在这个代码笔中:
我的人在发送之前先在字符串上做了一点工作
首先获取stringify返回的字符串
var json_string = JSON.stringify(itemsObject);
var string = json_string.replace("'", "\'");
string = '{\'[{"itemNumber":"13544","currentShelf":"1A1","amount":"1",
"newShelf":"","actionType":"in","whareHouse":"Main"},
{"itemNumber":"13544","currentShelf":"1B1","amount":"1",
"newShelf":"","actionType":"in", "whareHouse":"Main"}]\': \'\' }';
first_str = string.split("': "); // remove the last useless chars
second = first_str[0].substring(2, first_str[0].length); // remove the first two chars
$.post('/itemShell/updateMulti', second,
function(data){
console.log(data);
});
第二个应该具有正确的字符串
祝你好运,我发现了问题。
发布到节点时必须声明为JSON类型,因此需要使用ajax:
$.ajax({
url: '/itemShell/updateMulti',
type:"POST",
data:JSON.stringify(dataTosend),
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function(){}
}
我还将其更改为对象类型,如下所示:
dataToSend={dataArr:itemsObject}
所以在节点中它显示为数组如何发送?!此JSON无效,JSON。stringify
不会产生此结果。这是将stringify转换为普通对象的数组的结果。请提供复制问题的相关代码,因为您的stringify对象字符串无效,JSON格式不使用单引号。我更改了它,s直到相同的结果,node都不会。数据是以我写的另一种类型发送的。如果你试用这个测试仪,你会发现它确实有效。我认为OP的意思是服务器上的数据就是这样。他们还没有说他们可以访问服务器代码。此外,以这种奇怪的格式发送数据有点愚蠢,因为你可以“我不知道怎么做才是明智的。服务器上有什么,你读过上面的代码吗?他可以访问这里使用的所有变量。这里没有任何wierd,只有js拆分。我想string
只会出现在服务器上,因为我猜测这是怎么发生的(请参阅我对这个问题的评论)。他们没有对服务器说太多-他们显然可以调试,但不一定要更改代码。如果':
后面没有空格,或者字符串在[
之前有空格,或者如果':
出现在JSON字符串文本中(例如“currentShelf:”:“:”,
),则代码将失败。我承认这可能不是一个很好的方法。但是如果他们太草率以至于依赖这样的字符串,那么他们可能没有一个明确定义的接口,这是很糟糕的。服务器上显示的结果是由于JSON.Strigfy方法的结果,如@gabibrk所说。所以我们可以处理它。解决这个问题的方法总是b这也是一样的,因为我们只是在逃避gabibrk确认的引用,这是JSON.Strigfy的结果。此外,这只是一个解决办法,我对JSON字符串没意见。我抱怨的是它周围那些毫无意义的额外内容。“解决这个问题的方法总是一样的…”如果你说假设额外内容的确切结构不会改变是安全的,那么你可能是对的,但最好完全避免这种情况。我不知道字符串是如何生成的,OP可能理解得更少,而且据我们所知,它可能会受到服务器升级的影响(或包含':
)的字符串)。我们不应该求助于解决方法,我们可以做得更好。