【发布时间】:2016-02-08 04:49:15
【问题描述】:
我从 STOMP 订阅中获得消息体响应,如下所示:
"[{\"name\":\"test\",\"version\":\"1.0.4\",\"lifetime\":25000}]"
为了遍历它,我将它解析为 json 并得到这个:
[{"name":"test","version":"1.0.4","lifetime":25000}]
现在,当我尝试遍历它时,我收到以下错误消息:
未捕获的 TypeError:无法使用 'in' 运算符在 [{"name":"test","version":"1.0.4","lifetime":25000}] 中搜索 '86'
任何人都可以帮助我并说出我做错了什么吗?
这是我的代码:
stompClient.subscribe('/topic/validation', function(validationMessage){
console.log(validationMessage.body);
// --> "[{\"name\":\"test\",\"version\":\"1.0.4\",\"lifetime\":25000}]"
var jsonObj = JSON.parse(validationMessage.body);
console.log(jsonObj);
// --> [{"name":"test","version":"1.0.4","lifetime":25000}]
$.each(jsonObj, function(i,item){
console.log(item);
});
});
提前致谢。
validationMessage 的控制台日志:
Frame{
ack: (headers)arguments: nullcaller: nulllength: 1name: ""prototype: frame.ack__proto__: ()<function scope>
body: ""[{\"name\":\"test\",\"version\":\"1.0.4\",\"lifetime\":25000}]""
command: "MESSAGE"
headers: Object
content-length: "99"
content-type: "application/json;charset=UTF-8"
destination: "/topic/validation"
message-id: "1dm_aduc-1672"
subscription: "sub-0"__proto__: Objectnack: (headers)__proto__:
}
【问题讨论】:
-
body: ""[{\"name\":\"test\",\"version\":\"1.0.4\",\"lifetime\":25000}]""为什么会给出 2 * 双引号? -
是的,这就是问题所在!在服务器端,我在发送消息之前将返回的对象列表解析为字符串。然后将双引号置于响应中。现在我直接发送对象列表而不解析它,现在它工作正常。感谢您的帮助!
-
欢迎您。喜欢找到溶胶。 :)
标签: javascript json stomp