【问题标题】:Appcelerator: JSON.parse not doing anything within socketAppcelerator:JSON.parse 在套接字中没有做任何事情
【发布时间】:2013-04-28 07:08:10
【问题描述】:

我正在使用以下教程中的代码:

http://cssgallery.info/advanced-titanium-tutorial-bonjour-networking/

但由于这是 2 岁,它似乎不能 100% 工作(猜测是因为一些 api 更改)

据我所知,它不起作用,因为它在尝试将字符串解析为 json 时会中断

这一点:

var connection = bjnet(win.player.name, function(data){
    var json_data = JSON.parse(data);
    make_blob(json_data.player,json_data.coords);//this is just a function that makes the ...blobs!
});

由于某种原因,将以下字符串解析为 json 时遇到问题:

data = {"coords":{"x":166,"y":443},"player":{"color":"#0f0","name":"green"}}

我不知道为什么!我确认了它是一个字符串等,但是在自己尝试了一整天之后我现在承认失败并希望那里的天才可以帮助我!

顺便说一句,上面的函数是在“Titanium.Network.TCPSocket”的“读取”事件监听器中调用的

感谢您的宝贵时间:)

【问题讨论】:

  • 如果我在数据 var 上使用 JSON.stringify (这是一个我刚刚忘记引号的字符串)我得到这个:“{\”coords\”:{\“x\”:185.5, \"y\":300},\"player\":{\"color\":\"#0f0\",\"name\":\"green\"}}\u0000"
  • 当您尝试解析它时实际发生了什么?你有错误吗?
  • @David:如果您已经有 JSON 字符串格式的数据(来自您上面的讨论),那么我认为使用 JSON.parse(data) 解析数据不会给您带来麻烦。但是,既然你面临一个问题,那么有一个替代方案可以做同样的事情,试试 eval('(' + data + ')'),它的工作方式与 JSON.parse 相同,但它可能不是更好的选择,因为它有一些漏洞。
  • @ben336:是的,我得到“无法解析 JSON 字符串”,如果我在同一个字符串上使用 JSON.parse,而不是在下面的函数中,它解析得很好。 service.socket.addEventListener('read', function(x) { fn_receive(x['data'].text); // 这是调用下面的函数 }); var connection = bjnet(win.player.name, function(data){ });这与我试图在套接字事件侦听器中解析它的事实有关吗?但那为什么重要呢? “@Mohit Pandey”:我尝试了 eval('(' + data + ')') 但几乎得到了相同的错误“解析错误”感谢您到目前为止的帮助

标签: javascript json socket.io titanium bonjour


【解决方案1】:

我修好了! .. 不是我,而是这个帖子上的其他人:http://developer.appcelerator.com/question/126520/tcp-sockets-and-jsonparse

原来套接字正在向正在发送的数据中添加一个额外的字符,这与 json 解析器不兼容

现在可以正常使用了

感谢你们的帮助:)

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 2012-09-07
    • 2016-10-02
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多