2016-07-11 21 views
5

đoạnAttributeError: đối tượng 'str' không có thuộc tính 'tải', json.loads()

import json 
    teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}' 
    json = json.load(teststr) 

ném một ngoại lệ

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
AttributeError: 'str' object has no attribute 'loads' 

Làm thế nào để giải quyết một vấn đề?

+0

Bạn có thể cung cấp thêm chi tiết - đây là JS không? Bạn có thể cho liên kết để cắt? –

+3

thử tải thay vì tải –

+2

Thông báo lỗi không khớp với ví dụ của bạn. 'json.loads' không bao giờ được gọi là một phần của đầu vào trực tiếp. Bạn có cơ hội ràng buộc chuỗi dữ liệu JSON với tên 'json' không? – MisterMiyagi

Trả lời

13

json.load lấy con trỏ tệp và bạn đang chuyển một chuỗi. Có thể bạn muốn sử dụng json.loads để lấy một chuỗi làm tham số đầu tiên.

Thứ hai, khi bạn import json, bạn nên chăm sóc để không ghi đè lên nó, trừ khi nó hoàn toàn có chủ ý: json = json.load(teststr)< - Bad. Việc này ghi đè mô-đun mà bạn vừa mới nhập, thực hiện bất kỳ lệnh gọi nào trong tương lai cho mô-đun thực sự thực hiện các cuộc gọi đến lệnh dict đã được tạo.

Để sửa lỗi này, bạn có thể sử dụng một biến một lần nạp:

import json 
teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}' 
jsonstr = json.loads(teststr) 

HOẶC bạn có thể thay đổi tên mô-đun bạn đang nhập khẩu

import json as JSON 
teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}' 
json = JSON.loads(teststr) 

HOẶC bạn có thể đặc biệt nhập khẩu chức năng nào bạn muốn sử dụng từ mô-đun

from json import loads 
teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}' 
json = loads(teststr) 
+1

hoặc 'nhập json như jamison' + 1 – dsgdfg

+0

Yêu thích của tôi là phiên bản cuối cùng vì nó là rõ ràng nhất và hạn chế (tức là gây ô nhiễm không gian tên chung với các hàm bạn sẽ không sử dụng hoặc vô tình ghi đè) –

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