|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
В ответ на зарпрос получаю джейсон примерно такой структуры автор{u'count': 9306, u'offers': [{u'payout': u'0.40', u'languages_allowed': [{u'code': u'All', u'name': u'All Allowed If Not Blocked'}], u'tracking_link': u' http://crystal ads.afftrack.com/click?aid=110&linkid=B12157', u'terms': u'', u'description': u'Download, start the app and register\r\nKPI: add card >30%', u'countries': [{u'code': u 'UA', u'name': u'Ukraine'}], u'traffic_types': [u'Mobile Placements'], u'preview_link': u'https://play.google.com/store/apps/details?id=com.ftband.mono', u'time_zone': u'Asia/Beirut', u'devices': [{u'minimum_version': u'4', u'device_type': u'Android 4+'}], u'converts_on': u'Mobile App Install and Launch', u'states': {u'name': u'any' , u'abbr': u'any'}], "others":"any_values"} мне желательно вынкить отдельно count - цифру и offers виде листа или словаря Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9.
запускаю на сервере получаю ощибку автор jsonList = json.loads(toJson["offers"]) TypeError: string indices must be integers, not str как надо правельою В процессе перехода на питон так что сильно не пинайте ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 08:42 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
Вангую, должно быть Код: python 1.
Потому что toJson -- строка, о чем Питон и говорит. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 09:03 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
а как распарсить её в лист или словарь? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 10:13 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
а понял. сейчас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 10:15 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
Alexander A. SakВангую, должно быть Код: python 1.
Потому что toJson -- строка, о чем Питон и говорит. попробывалю получил джейсок информациией о поставщикахю пробую распарсить его: Код: python 1. 2. 3.
; получаю ответ: авторTraceback (most recent call last): File "request.py", line 19, in <module> offersList = json.loads(jsonList); File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads return _default_decoder.decode(s) File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) TypeError: expected string or buffer что опять не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 14:11 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
Оказывается можно на прямую jsonList[0] !! Нодо к новому языку привыкать )) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 14:16 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
AreostarОказывается можно на прямую jsonList[0] !! Нодо к новому языку привыкать ))В PHP же также ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 14:21 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
skyANA, Ну не совсемю там более тапорно. различие мелкие но я на них постоянно вспотыкаюсь (( во в одном из пунктов списка сейчас содержится маленький джейсон [{u'code': u'All', u'name': u'All Allowed If Not Blocked'}] пытаюсь получать токо code. offersList[0]["languages_allowed"]["code"] не катит json.loads(offersList[0]["languages_allowed"])["code"] - тоже, пишет авторFile "request.py", line 21, in <module> print json.loads(offersList[0]["languages_allowed"])["name"] File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads return _default_decoder.decode(s) File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) TypeError: expected string or buffer А в чем тут разница с offersList = json.loads(toJson)["offers"] ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 14:40 |
|
Python 2.7 парсинг JSON
|
|||
---|---|---|---|
#18+
Areostar, json.loads десериализует строку в объект. Надеюсь слова десериализует, строка, объект Вам понятны? toJson - это тупо строка response.content у Вас json.loads(toJson) - десериализованный из строки объект json.loads(toJson)["offers"] - свойство offers данного объекта, что представляет из себя массив к элементу массива, что в PHP, что в Python можно обратиться по индексу каждый элемент из массива offers представляет собой объект, у которого есть свойство languages_allowed , что также содержит массив из всего этого следует, что до code добраться можно так: Код: python 1. 2. 3. 4. 5. 6. 7.
а Вы пытаетесь зачем-то десериализовать уже десериализованный объект P.S.: я на Python вообще не пишу, пару лаб раз в жизни сделал ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2018, 14:59 |
|
|
start [/forum/topic.php?fid=23&fpage=23&tid=1460243]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 146ms |
0 / 0 |