0

我有以下 JSON:

{"StationRow":[{"Title":"XXX"},X{"Thumbnail":"http://exampletv.com/shopping/Portals/10/PropertyAgent/757/Images/6.jpg"},{"LinkCode":"http://www.youtube.com/watch?v=J4bw4y3h69I http://www.youtube-nocookie.com/embed/J4bw4y3h69I?rel=0"},{"SourceType":"embed"},{"LinkURL":"http://www.youtube.com/watch?v=J4bw4y3h69I"},{"Title":"ΚΛΕΜΜΕΝΑ ΟΝΕΙΡA"},{"Description":"XXXX."},{"Thumbnail":"http://exampletv.com/shopping/Portals/10/PropertyAgent/757/Images/14.jpg"},{"LinkCode":"ΚΛΕΜΜΕΝΑ ΟΝΕΙΡΑ - ΕΠ. 293 ΑΠΟΣΠΑΣΜΑ, http://www.youtube.com/watch?v=wSrhamIIaR4, http://exampletv.com/shopping/Portals/10/PropertyAgent/757/Images/17.jpg, ΚΛΕΜΜΕΝΑ ΟΝΕΙΡΑ - ΕΠ. 292 ΑΠΟΣΠΑΣΜΑ, http://www.youtube.com/watch?v=jxxhttp://exampletv.com/shopping/Portals/10/PropertyAgent/757/Images/16.jpg, ΚΛΕΜΜΕΝΑ ΟΝΕΙΡΑ - ΕΠ. 291 ΑΠΟΣΠΑΣΜΑ, http://www.youtube.com/watch?v=xx, http://exampletv.com/shopping/Portals/10/PropertyAgent/757/Images/15.jpg, xx ΟΝΕΙΡΑ - ΕΠ. 290 ΑΠΟΣΠΑΣΜΑ, http://www.youtube.com/watch?v=ILcwh7tMJ2Y, http://exampletv.com/shopping/Portals/10/PropertyAgent/757/Images/14.jpg, "},{"SourceType":"embed"},{"LinkURL":""}]}

使用simplejson它会引发以下异常:

 NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <class 'simplejson.scanner.JSONDecodeError'>
                                            Error Contents: Invalid control character 'h' at: line 1 column 260 (char 259)
                                            Traceback (most recent call last):

JSONLint 称之为 ValidJSON

如何弄清楚?

我正在使用 XBMC 附带的 Python 2.6

4

2 回答 2

3

将您的 json 保存为 text.json 并在您的终端应用程序中输入:

cat text.json | od -c

它会产生这样的东西:

0000000    {   "   S   t   a   t   i   o   n   R   o   w   "   :   [   {
0000020    "   T   i   t   l   e   "   :   "   Σ  **   Υ  **   Ν  **   Τ
0000040   **   Α  **   Γ  **   Ε  **   Σ  **       Ε  **   Λ  **   Λ  **
0000060    Η  **   Ν  **   Ι  **   Κ  **   Ε  **   Σ  **   "   }   ,   {
0000100    "   D   e   s   c   r   i   p   t   i   o   n   "   :   "   Σ
0000120   **   Υ  **   Ν  **   Τ  **   Α  **   Γ  **   Ε  **   Σ  **    

然后你可以去259的位置看看是怎么回事。

于 2014-02-07T03:53:27.470 回答
0

您可能想尝试另一种方法,即从字符串中删除所有不可打印的字符。修改自从 python 中的字符串中剥离不可打印的字符

import re

def remove_control_chars(s):
    control_chars = ''.join(map(unichr, range(0,32) + range(127,160)))
    control_char_re = re.compile('[%s]' % re.escape(control_chars))

    return control_char_re.sub('', s)

cleaned_json = remove_control_chars(original_json)
obj = simplejson.loads(cleaned_json)
于 2015-01-20T06:13:33.743 回答