JSON解析返回未定义

时间:2018-10-21 00:03:42

标签: javascript json stomp

我正在接收带有一些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应用程序的一部分,并且库是相同的。

1 个答案:

答案 0 :(得分:0)

因此,感谢@CertainPerformance。如您在第一个示例中所见,我的JSON对象具有一个元素“ content”

{"content":"user has subscribed!"}

它通过使用JSON.parse(notification.body).content

获得了价值

但是在第二个示例中,仅“通知”没有元素“内容”

{"notification": "user has subscribed!"}

因此,要获取“ notification”的值,您需要使用JSON.parse(notification.body).notification

我希望这篇文章对某人有帮助。