CNode

求解: 包含数组的数据发送到Node服务端后,左中括号被转换的问题

Bbatmanjs发布于13 年前最后回复13 年前9 回复5653 浏览0 收藏

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

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

查看回复

回复 (9)

I
ibigbug#1·13 年前

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

L
llj732589025#2·13 年前

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

B
batmanjs#3·13 年前
引用 llj732589025JSON.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] } } }

C
cfk199244#4·13 年前

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

L
llj732589025#5·13 年前
引用 llj732589025JSON.stringify({a:[1,2]}) "{"a":[1,2]}" 不知道你这个怎么会变成 :{

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

W
we2code#8·13 年前
引用 llj732589025JSON.stringify({a:[1,2]}) "{"a":[1,2]}" 不知道你这个怎么会变成 :{

@batmanjs

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

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

L
ldl694178563#9·13 年前

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

参与回复
登录后即可参与回复。登录