【发布时间】:2018-11-03 12:53:18
【问题描述】:
我通过 websocket (Socket.io) 从 nodejs 服务器发送 json 字符串并在客户端(浏览器)上接收它。 但是我必须运行 json.parse 函数两次才能从接收到的 json 字符串中获取对象。我不明白为什么。
我有一个向客户端发送 JSON 字符串的服务器
dataString = '{"test": [ {"M": "A", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"},{"M": "B", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"}, {"M": "C", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"},{"M": "D", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"}]}'
let data = JSON.stringify(dataString);
socket.emit('test', data );
在客户网站上我收到以下字符串:
"{\"test\": [ {\"M\": \"A\", \"R\": \"e\", \"B\": \"e\", \"C\": \"e\", \"K\": \"e\", \"BD\": \"e\", \"CYC\": \"e\"},{\"M\": \"B\", \"R\": \"e\", \"B\": \"e\", \"C\": \"e\", \"K\": \"e\", \"BD\": \"e\", \"CYC\": \"e\"}, {\"M\": \"C\", \"R\": \"e\", \"B\": \"e\", \"C\": \"e\", \"K\": \"e\", \"BD\": \"e\", \"CYC\": \"e\"},{\"M\": \"D\", \"R\": \"e\", \"B\": \"e\", \"C\": \"e\", \"K\": \"e\", \"BD\": \"e\", \"CYC\": \"e\"}]}\n"
我必须运行 json.parse 函数两次才能得到一个对象。在第一次执行 json.parse 我得到一个字符串:
{"test": [ {"M": "A", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"},{"M": "B", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"}, {"M": "C", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"},{"M": "D", "R": "e", "B": "e", "C": "e", "K": "e", "BD": "e", "CYC": "e"}]}
客户网站上的代码:
socket.on('test', function (message) {
var rec = message;
var transfer = JSON.parse(rec);
alert(transfer);
var transfer = JSON.parse(transfer);
alert(transfer);
})
【问题讨论】:
标签: javascript json parsing websocket