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 实例