2012-02-08 25 views
18

Tôi đã viết một kịch bản Python để phân tích cú pháp thông tin JSON từ API Soundcloud và tôi chỉ tự hỏi "u" là gì khi tôi sử dụng json.loads (val) và cách lưu trữ thông tin JSON vào đối tượng không có của u?Khi nào tôi sử dụng json.loads là gì?

ví dụ: tại sao có u ở trong này:

>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') 
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}] 

Hãy xem phần "giải mã JSON" phần vào đây để hiểu những gì tôi muốn nói thêm:

http://docs.python.org/library/json.html

Cảm ơn bạn!

+0

Bài đăng hữu ích khác: http://stackoverflow.com/questions/13940272/python-json-tải-trả về-mục-tiền tố-với-u –

Trả lời

7

các u' s đang có để chỉ ra rằng một chuỗi Unicode là vụ phải được tạo ra.

Nó hút rằng json.dump chuyển đổi chuỗi thành chuỗi unicode và không để lại dấu vết đã thực hiện điều đó, bởi vì sau đó json.load không thể chuyển đổi ngược lại.

Để chuyển đổi các đối tượng chuỗi, sử dụng PyYAML:

>>> import yaml 
>>> yaml.load('["foo", {"bar":["baz", null, 1.0, 2]}]') 
>>> ['foo', {'bar': ['baz', None, 1.0, 2]}] 

Nhưng cẩn thận! Nếu vì lý do nào đó, bạn json.dump chỉnh sửa đối tượng chứa chuỗi đối tượng và chuỗi unicode, yaml sẽ tải mọi thứ dưới dạng chuỗi đối tượng (mặc dù đó là lỗi của json.dump)

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