JSON 无效令牌

Posted

技术标签:

【中文标题】JSON 无效令牌【英文标题】:JSON invalid token 【发布时间】:2011-07-13 12:56:51 【问题描述】:

你好, 我的解析函数有一个非常烦人的问题。我从我的 websocket 服务器接收到一个 JSON 字符串(我很确定它是)。我已经在线验证了它,但在用我的脚本解析它时仍然收到“无效令牌”错误。

但是,如果我手动输入该函数,则一切正常。我的弦有什么问题?

function parseSocketMsg(msg)
        var obj = jQuery.parseJSON(msg);
        $.each(obj, function(i, item)
            var rec = getRect(item.id);
            rec.x = item.x;
            rec.y = item.y;
        );


function connect()
    var host = "ws://localhost:8080/scrabble/server.php";
    try
        socket = new WebSocket(host);
        print("Connected. Awaiting Handshake...");
        socket.onopen    = function(msg)
            if(!ctx)
                init();
             
            print("Connection established - status "+this.readyState); 
        ;
        socket.onmessage = function(msg) parseSocketMsg(msg.data); ;
        socket.onclose   = function(msg) print("Connection Lost! Reconnecting..."); connect(); ;
    
    catch(ex)

【问题讨论】:

你能发布一个示例 JSON 字符串吗? 尝试自己记录输入,使用 firebug 的 console.log 或简单的警报。 这是收到的:["id":7,"x":637,"y":151,"id":23,"x":672,"y ":151,"id":10,"x":733,"y":416] @Nokus:如果您使用的是 Chrome,有一个很好的资源可以查看实际收到的数据:chrome://net-internals/ 【参考方案1】:

最近有一个类似的问题,问题是字符串的开头和结尾有一个意外的空字符。

我建议您将尝试解析的内容的确切内容以十六进制形式转储,目视检查并不总是会在字符数据中显示异常。

【讨论】:

ymmd,开头有一个额外的字符,把一切都搞砸了。谢谢!【参考方案2】:

你有var host = "ws://... 这可能是问题吗?你确定你收到了什么? (记录/打印/无论你得到什么)。我想您正在阅读服务器中的日志并假设您的 js 正在获取它。

【讨论】:

我把它打印在浏览器上,然后直接复制回 js 中,结果发现它与我收到的不同。它也有效 0.o

以上是关于JSON 无效令牌的主要内容,如果未能解决你的问题,请参考以下文章

从 BigQuery 中具有无效令牌的列中解析 JSON 文件

如何在rails中处理来自应用程序控制器的无效真实性令牌json请求

Json.NET 中的异常:处于“开​​始”状态的令牌 PropertyName 将导致无效的 JavaScript 对象

如何解决错误:无效的 JSON 输入:无法从 START_ARRAY 令牌中反序列化 Topic 实例

当我们不再使用它时,为 json web token 设置无效

asp.net 核心中的 jwt 令牌无效