代码之家  ›  专栏  ›  技术社区  ›  Seymur Asadov

通过Websocket控制器打印来自Stomp的json数组

  •  0
  • Seymur Asadov  · 技术社区  · 7 年前

    我将jackson数据绑定添加到我的类路径中。。

           @MessageMapping("/hello")
            @SendTo("/topic/whoIsOnline")
            public List<User> greeting(String name) throws Exception {
                List<User> list = new ArrayList<User>();
                User user = new User();
                user.setEmail("test@gmail.com");
                list.add(user);
                User user1 = new User();
                user1.setEmail("example@gmail.com");
                list.add(user1);
                System.out.println(list);
                return list;
            }
    

    var stompClient = null;
        $(document).ready(function() {
    
            var socket = new SockJS('onlineUsers');
            stompClient = Stomp.over(socket);
            stompClient.connect({}, function(frame) {
    
                console.log('Connected: ' + frame);
                stompClient.subscribe('/topic/whoIsOnline', function(result) {
                    var results = result.body;
                    for(var i in results){
                          console.log(results[i].email);
                        }
    
                });
            });
        });
    
        function sendName() {
            var txtUser = $('#txtUser').val();
            stompClient.send("/app/hello", {}, JSON.stringify(txtUser));
        }
    

    当我写文件的时候。writeln(结果)它是这样打印的。。。

    [{"email":"test@gmail.com"},{"email":"example@gmail.com"}]
    

    test@gmail.com
    example@gmail.com
    

    for(var i in results)
       {
          console.log(results[i].email);
       }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Java Beginner    7 年前

    尝试以下代码

    var results = result.body;
    var data = JSON.parse(results);
    for(var i in data){
        console.log(data[i].email);
    }