我正在接收带有一些JSON数据的STOMP消息,问题是我有一种情况我正在使用的代码有效
function connect() {
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
console.log("data -->" +greeting + " <-- data");
console.log(JSON.parse(greeting.body) + " <-- JSON object");
console.log(JSON.parse(greeting.body).content + " <-- parsed data");
showGreeting(JSON.parse(greeting.body).content);
});
});
}
结果
data -->MESSAGE
content-length:34
message-id:4wb1eunw-1
subscription:sub-0
content-type:application/json;charset=UTF-8
destination:/topic/greetings
content-length:34
{"content":"user has subscribed!"} <-- data
[object Object] <-- JSON object
user has subscribed! <-- parsed data
我在另一个项目中使用几乎相同的代码
function connect() {
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/golden/notification', function (notification) {
console.log("data -->" +notification + " <-- data");
console.log(JSON.parse(notification.body) + " <-- JSON object");
console.log(JSON.parse(notification.body).content + " <-- parsed data");
showNotification(JSON.parse(notification.body).content);
});
});
}
但是结果有所不同
data -->MESSAGE
content-length:39
message-id:wh4z1ahx-0
subscription:sub-0
content-type:application/json;charset=UTF-8
destination:/golden/notification
content-length:39
{"notification": "user has subscribed!"} <-- data
[object Object] <-- JSON object
undefined <-- parsed data
我对Js有点陌生,所以答案可能真的很简单,但是我找不到任何解决方案来解决这个问题。
P.S。该脚本是Sring Boot应用程序的一部分,并且库是相同的。
答案 0 :(得分:0)
因此,感谢@CertainPerformance。如您在第一个示例中所见,我的JSON对象具有一个元素“ content”
{"content":"user has subscribed!"}
它通过使用JSON.parse(notification.body).content
但是在第二个示例中,仅“通知”没有元素“内容”
{"notification": "user has subscribed!"}
因此,要获取“ notification”的值,您需要使用JSON.parse(notification.body).notification
我希望这篇文章对某人有帮助。