Reputation: 59
I send json string via websocket (Socket.io )from nodejs server and receive it on Client (Browser). But i have to run the json.parse function twice time to get a object from the received json string. I don`t understand why.
I have a Server which sends a JSON String to Client
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 );
On Client site i received following string:
"{\"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"
i have to run the json.parse function twice times to get a object. At first execute of json.parse i got a string:
{"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"}]}
Code on Client Site:
socket.on('test', function (message) {
var rec = message;
var transfer = JSON.parse(rec);
alert(transfer);
var transfer = JSON.parse(transfer);
alert(transfer);
})
Upvotes: 1
Views: 1482
Reputation: 7919
because of you stringify
your string here
let data = JSON.stringify(dataString);
why not parseJSON your dataString and then send it as a JSON to client?
let data = JSON.parse(dataString);
socket.emit('test', data );
Upvotes: 1