2016-01-13 4 views
1

Я получил данные json, используя метод openener.open. Теперь я хочу ссылаться на ее элитность. Я пробовал следующий код, но я получаю ошибку! Кроме того, я хочу получить значение токена = только для ссылки2. Может ли кто-нибудь помочь мне исправить эту ошибку и получить значение токена? Заранее спасибо.Как разбирать элементы json с помощью python?

код:

resp2 = opener.open('http://somewebsite.com/test/id',post_data) 
     print resp2.read() 
     Response = resp2.read(); 
     j_obj = json.load(Response) 
     print j_obj['link2'] 

ошибка:

ERROR: EXCEPTION Thrown (PythonToCppException) : 
-->Python callback/script returned the following error<-- 
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS! 
Error Type: <type 'exceptions.AttributeError'> 
Error Contents: 'str' object has no attribute 'read' 
j_obj = json.load(Response) 
line 286, in load 
return loads(fp.read(), 
AttributeError: 'str' object has no attribute 'read' 
-->End of Python script error report<-- 

JSON данные:

{ 
     "id": 1, 
     "name": "Test World", 
     "link1": "rtmp:\/\/me.someWebsite.com:1234\/static\/testWorld1?token=123456789abcdefghijklmnopqr&e=987654321&u=99999", 
     "link2": "http:\/\/me.someWebsite.com:1234\/testWorld1\/index.m3u8?token=123456789abcdefghijklmnopqr&e=987654321&u=99999&channel=testWorld1", 
     "image": "http:\/\/me.someWebsite.com\/img\/1\/2\/3\/4\/56.png", 
     "net": "rtmp:\/\/me.someWebSite.com:1234\/static", 
     "url": "testWorld1?token=123456789abcdefghijklmnopqr&e=987654321&u=99999", 
     "favorite": false, 
     "date": "2014-05-1" 
    } 
+1

'json.load()' для объектов типа файла, 'json.loads()' для строк. – AChampion

ответ

2

Выполните следующие действия - обратите внимание, что resp2 уже string!

resp2 = opener.open('http://somewebsite.com/test/id',post_data) 
print resp2 # You can verify you are receiving JSON data here. 
j_obj = json.loads(resp2) 
print j_obj['link2'] 
+0

Спасибо за ответы. Я попробовал это сейчас: теперь я получаю эту ошибку: Тип ошибки: Содержимое ошибки: не может быть декодирован объект JSON. Traceback (последний последний вызов): – user1788736

+0

напечатайте полученную строку. Опубликуйте то, что он содержит. –

+0

Большое спасибо, я удалил Response = resp2.read(); и использовал resp2, теперь я получил значение link2. Как я могу получить значение токена на этой ссылке2? (Токен = 123456789abcdefghijklmnopqr) – user1788736

1

Вы можете попробовать использовать другой метод,

import urllib2 

    post_data = ... 
    fp = urllib2.urlopen('http://somewebsite.com/test/id', post_data) 
    resp = fp.read() 
    print(resp)