gpt4 book ai didi

javascript - 序列化 JSON 数组并将其解析为数组

转载 作者:行者123 更新时间:2023-12-03 11:26:31 25 4
gpt4 key购买 nike

我在序列化和解析数组时遇到问题。我向您展示代码并进行解释:

代码

<小时/>

客户端 POST 请求:

jQuery('.upload').on('click', function()
{
var flats = [];
var data_building_id = jQuery(this).attr('data-building-id');
jQuery('#setup-' + data_building_id).find('.flat-value').each(function()
{
flats.push(jQuery(this).html());
});
flats.sort();
var data = 'building={"flats":' + JSON.stringify(flats) + ',"_id":"' + data_building_id + '"}' ;
makeTheRequest('post', 'admin_buildings', data, 'json', onSuccessSignLog, onErrorGenericAJAX);
});
<小时/>

构建 Controller 代码:

router.post('/admin_buildings', function(req, res)
{
var building = req.body.building;
if(req.session && req.session.user && (req.session.user.rol=="Admin" || req.session.user.rol=="superAdmin") && building)
{
building = JSON.parse(building);
building.flats = new Array(building.flats);
if(building.flats instanceof Array)
console.log("buildings.js-> admin_building-> flats is array");
buildingDB.updateBuilding(building, function(results)
{
//here goes the returning values to the client.
});
}
});
<小时/>

建筑模型代码:

this.updateBuilding = function(building,  callback)
{
Model.findById(building._id, function(err, doc)
{
if(err) callback({success:0, error:1, result: err});
else if(!doc || doc.lenght==0) callback({success:0, error:1});
else
{
if(building.flats && building.flats instanceof Array)doc.flats = [building.flats];
for (var x=0;x<doc.flats.length;x++)
console.log("The element " + x + " on the array flat doc is: " + doc.flats[x]);
if(building.flat) doc.flats.push(building.flat);
doc.save(function(err)
{
if(err)callback({success:0, error:1, result: err});
else callback({success:1, error:0, result:doc});
});
}
});
}
<小时/>

好的!!我尽力总结最多的内容,但是......
我所做的是,在客户端:获取一些数据,将它们放入数组中并按字母顺序排序(例如:1a、1b、2a、2b...平面和门),最后我序列化该数组并在帖子上发送.
Controller 获取序列化数据(数组和建筑物 ID)并解析它们。对于此测试,我询问构建解析对象的平场是否是一个数组,在积极的情况下,日志显示“...平场是数组”。然后我将其传递给模型。
如果作为参数传递的对象(建筑物)具有这些字段,则模型仅更改恢复文档的某些字段(地址、城市、州...而不是代码)。而且,对于测试来说,for 循环也必须显示数组上的所有平面,而且确实如此……但不是一一显示,这就是问题。它必须显示如下内容:
数组平面文档上的元素 0 是:1a
数组平面文档上的元素 0 是:1b
数组平面文档上的元素 0 是:2a
数组平面文档上的元素 0 是:2b
但尽管如此,它表明了这一点:
数组平面文档中的元素 0 为:1a,1b,2a,2b
可以做我想做的事,但我迈出了一些糟糕的一步吗?我做错了什么?

非常感谢。

最佳答案

删除该行

building.flats = new Array(building.flats);


因为building.flats已经是一个数组,所以您得到一个嵌套数组,因此您得到结果1a,1b,2a,2b

关于javascript - 序列化 JSON 数组并将其解析为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com