简体   繁体   English

SyntaxError:JSON在位置x处出现意外令牌

[英]SyntaxError: Unexpected token in JSON at position x

Well I know this question is asked many times. 我知道这个问题被问过很多次了。 But this one is different. 但这是不同的。

I'm using getJSON to get some data from Database. 我正在使用getJSON从数据库中获取一些数据。 The result that is returned is a valid JSON (checked by several JSON validators), but I receive the following error: 返回的结果是有效的JSON(由多个JSON验证程序检查),但是我收到以下错误:

SyntaxError: Unexpected token in JSON at position 1618 SyntaxError:JSON在位置1618中出现意外令牌

which has a special character in it which doesn't show up in the above error. 其中有一个特殊字符,不会出现上述错误。

This is the screenshot of the error message: 这是错误消息的屏幕截图:

在此处输入图片说明

the character at position 1618 is a space (code is 32), and it is inside a text value. 位置1618处的字符是一个空格(代码为32),并且在文本值内。

Here is the JSON text: 这是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":""}]}

Your JSON (retrieved from http://sabad123.com/ajax/update-input.aspx?t=province&id=8 ) has a tab ( "\\t" ) at character 1618, right here: 您的JSON(从http://sabad123.com/ajax/update-input.aspx?t=province&id=8检索)的字符1618处有一个制表符( "\\t" ),就在这里:

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

This is failing to parse in Python's JSON parser as well as $.getJSON . 这无法在Python的JSON解析器以及$.getJSON

I would next take a look at how you're producing this JSON. 接下来,我将看一下如何生成此JSON。 Since it doesn't seem to be valid, there may be a bug in whatever's producing it. 由于它似乎无效,因此产生该结果的任何地方都可能存在错误。

At the very least, you can fix up this specific data problem by getting rid of the tab. 至少,您可以通过摆脱选项卡来解决此特定数据问题。

EDIT 编辑

Note that, indeed, per the JSON spec, a tab is not an allowed character in a JSON string. 请注意,实际上,按照JSON规范,制表符不是JSON字符串中的允许字符。 See https://stackoverflow.com/a/19799355/94559 . 参见https://stackoverflow.com/a/19799355/94559 I think \ is the proper way to escape the tab character. 我认为\ 是转义制表符的正确方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM