2012-02-06 26 views
10

Tôi đang cố gắng phân tích cú pháp dữ liệu phản hồi json từ youtube api nhưng tôi vẫn gặp lỗi.JSON hợp lệ cho JSONDecodeError: Mong đợi, dấu phân cách

Dưới đây là đoạn mã mà nó nghẹn:

data = json.loads("""{ "entry":{ "etag":"W/\"A0UGRK47eCp7I9B9WiRrYU0.\"" } }""") 

..và điều này xảy ra:

JSONDecodeError: Expecting , delimiter: line 1 column 23 (char 23) 

Tôi đã xác nhận rằng đó là json hợp lệ và tôi không có quyền kiểm soát các định dạng của nó vì vậy làm thế nào tôi có thể vượt qua lỗi này?

Trả lời

20

Bạn sẽ cần một r trước """, hoặc thay thế tất cả \ với \\. Đây không phải là điều bạn nên quan tâm khi đọc json từ một nơi khác, nhưng một cái gì đó trong chuỗi chính nó.

data = json.loads(r"""{ "entry":{ "etag":"W/\"A0UGRK47eCp7I9B9WiRrYU0.\"" } }""")

thấy here để biết thêm thông tin

3

bạn cần phải thêm r trước chuỗi json của bạn.

>>> st = r'{ "entry":{ "etag":"W/\"A0UGRK47eCp7I9B9WiRrYU0.\"" } }' 
>>> data = json.loads(st) 
>>> 
+0

Tôi nghĩ tốt hơn nên sử dụng "" "thay vì 'để kèm theo json bởi vì dữ liệu có thể có dấu ngoặc đơn không thoát trong nó. Cảm ơn câu trả lời. – ofko

+0

@ofko: Tôi biết rằng tôi chỉ viết điều này cho sự rõ ràng. – RanRag

Các vấn đề liên quan