SyntaxError:位置x的JSON中的意外标记

时间:2016-07-16 17:43:49

标签: jquery json ajax getjson

我知道很多次都会问这个问题。但这个是不同的。

我使用getJSON从数据库中获取一些数据。返回的结果是有效的JSON(由几个JSON验证器检查),但是我收到以下错误:

  

SyntaxError:位于1618的JSON中的意外标记

其中包含一个特殊字符,并未显示在上述错误中。

这是错误消息的屏幕截图:

enter image description here

位置1618处的字符是空格(代码为32),它位于文本值内。

这是JSON文本:

{"headers":["default","fa-ir","en-us"],"results":[{"id":14,"default":"آذربایجان شرقی","fa-ir":"آذربایجان شرقی","en-us":""},{"id":15,"default":"آذربایجان غربی","fa-ir":"آذربایجان غربی","en-us":""},{"id":16,"default":"اردبیل","fa-ir":"اردبیل","en-us":""},{"id":17,"default":"اصفهان","fa-ir":"اصفهان","en-us":""},{"id":18,"default":"البرز","fa-ir":"البرز","en-us":""},{"id":19,"default":"ایلام","fa-ir":"ایلام","en-us":""},{"id":20,"default":"بوشهر","fa-ir":"بوشهر","en-us":""},{"id":21,"default":"تهران","fa-ir":"تهران","en-us":""},{"id":22,"default":"چهارمحال و بختیاری","fa-ir":"چهارمحال و بختیاری","en-us":""},{"id":23,"default":"خراسان جنوبی","fa-ir":"خراسان جنوبی","en-us":""},{"id":24,"default":"خراسان رضوی","fa-ir":"خراسان رضوی","en-us":""},{"id":25,"default":"خراسان شمالی","fa-ir":"خراسان شمالی","en-us":""},{"id":26,"default":"خوزستان","fa-ir":"خوزستان","en-us":""},{"id":27,"default":"زنجان","fa-ir":"زنجان","en-us":""},{"id":28,"default":"سمنان","fa-ir":"سمنان","en-us":""},{"id":29,"default":"سیستان و بلوچستان","fa-ir":"سیستان و بلوچستان","en-us":""},{"id":30,"default":"فارس","fa-ir":"فارس","en-us":""},{"id":31,"default":"قزوین","fa-ir":"قزوین","en-us":""},{"id":32,"default":"قم","fa-ir":"قم","en-us":""},{"id":33,"default":"کردستان","fa-ir":"کردستان","en-us":""},{"id":34,"default":"کرمان","fa-ir":"کرمان","en-us":""},{"id":35,"default":"کرمانشاه","fa-ir":"کرمانشاه","en-us":""},{"id":36,"default":"کهگیلویه و بویراحمد","fa-ir":"کهگیلویه و بویراحمد","en-us":""},{"id":37,"default":"گلستان","fa-ir":"گلستان","en-us":""},{"id":38,"default":"گیلان","fa-ir":"گیلان","en-us":""},{"id":39,"default":"لرستان ","fa-ir":"لرستان ","en-us":""},{"id":40,"default":"مازندران","fa-ir":"مرکزی","en-us":""},{"id":41,"default":"هرمزگان","fa-ir":"هرمزگان","en-us":""},{"id":42,"default":"همدان","fa-ir":"همدان","en-us":""},{"id":43,"default":"یزد","fa-ir":"یزد","en-us":""}]}

1 个答案:

答案 0 :(得分:3)

您的JSON(从http://sabad123.com/ajax/update-input.aspx?t=province&id=8检索到)在字符1618处有一个标签("\t"),就在这里:

...{"id":39,"default":"لرستان \t",...

这在Python的JSON解析器和$.getJSON中都无法解析。

接下来我将看看你是如何制作这个JSON的。由于它似乎没有效果,因此产生它的任何东西都可能存在错误。

至少,您可以通过删除选项卡来修复此特定数据问题。

修改

请注意,实际上,根据JSON规范,选项卡不是JSON字符串中的允许字符。见https://stackoverflow.com/a/19799355/94559。我认为\u0009是逃避制表符的正确方法。