求解: 包含数组的数据发送到Node服务端后,左中括号被转换的问题
发布于 11 年前 作者 batmanjs 5045 次浏览 最后一次编辑是 8 年前

在前端, 数据被JSON.stringift 用POST方式发送到node服务端,本来是‘[’符号 被转换成了 ': { ’

而为什么要用JSON.stringift,是因为公司的插件的原因。 所以在这里请教这是怎么回事,以及如何破解之妙方!

9 回复

竟然有此等转换!谁干的!

JSON.stringify({a:[1,2]}) "{“a”:[1,2]}" 不知道你这个怎么会变成 :{

嗯 前端发送的时候数据还是完整的 然后在服务器端 用req.body接收后就出现问题了 ,像这样:

{ ‘{“title”:null,“type”:“会议”,“created”:null,“meetingTime”:{“start”:“2013-08-03T04:00:00.000Z”,“end”:“2013-08-03T04:30:00.000Z”},“username”:“lzh”,“meetingRoom”:null,“process”:’: { ‘],“members”:{“groupMember”’: { ‘{“id”:“zhz”,“type”:“员工”,“name”:“XXX”,“gender”:“男”},{“id”:“cey”,“type”:“员工”,“name”:“XXX”,“gender”:“男”}]},“remind”:{“method”:“rtx”,“time”’: [Object] } } }

@batmanjs req.body是用express框架的 我没用过, 我用nodejs原来的方法 返回buffer转换为字符串都是正确的实现不了你的错误 帮不了你啦

@llj732589025 嗯 好吧 谢谢你的回帖

@batmanjs 都没帮到你 不客气

@batmanjs

看一下,你JSON转换之前的对象?

JS中不存在关联数组,数组必须时数字下标的,关联数组在JS里是用对象来实现的

在数据被JSON.stringift 用POST方式发送到node服务端之前,console.dir(数据) 看看是什么,再看看node app.js中 最早出现req的地方,把数据console.dir(数据)看看是什么,如果两处数据一样那也许是Node.js服务器做了XSS处理导致。至少这样可以确定问题在哪里

如果实在不行,你可以在post的时候使用escape加密json字符串,这样就不存在[]了,然后接受时使用unescape

回到顶部