Найти - Пользователи
Полная версия: Декодирование Json данных
Начало » Python для новичков » Декодирование Json данных
1 2 3
Seganapa
Приведу кусочек кода контента который получаю от сервера:

ITowns.initialize({"groups":null,"towns":[{"id":51543,"name":"\u041a\u0440\u0430\u0441\u043d\u043e\u0434\u0430\u0440","island_x":788,"island_y":648,"plenty":"iron","rare":"wood","has_conqueror":false,"researches":{"berth":false,"conscription":false,"mathematics":false},"favor":500}]

Данные возвращаются в формате Json. Имеется ли возможность их правильно декодировать, для дальнейшей работы со значениями?

В php очень удобно с этим справляется json_decode. Он возвращает массив с ключами и значениями, с которым потом очень удобно работать. А вот как сделать что-то похожее на Python?
Zerstoren
import json

json.loads(jsonDataString)
json.dumps(dataToEncoding)

Seganapa
К примеру
#coding:utf-8
import json
jsondata='[{"id":51543,"name":"\u041a\u0440\u0430\u0441\u043d\u043e\u0434\u0430\u0440","island_x":788,"island_y":648,"plenty":"iron","rare":"wood","has_conqueror":false,"researches":{"berth":false,"conscription":false,"mathematics":false},"favor":500}]'
a = json.loads(jsondata)
b = json.dumps(jsondata)
print a
print b

На выходе получаю
pydev debugger: starting
[{u'rare': u'wood', u'name': u'\u041a\u0440\u0430\u0441\u043d\u043e\u0434\u0430\u0440', u'island_x': 788, u'island_y': 648, u'researches': {u'mathematics': False, u'berth': False, u'conscription': False}, u'has_conqueror': False, u'favor': 500, u'plenty': u'iron', u'id': 51543}]
"[{\"id\":51543,\"name\":\"\\u041a\\u0440\\u0430\\u0441\\u043d\\u043e\\u0434\\u0430\\u0440\",\"island_x\":788,\"island_y\":648,\"plenty\":\"iron\",\"rare\":\"wood\",\"has_conqueror\":false,\"researches\":{\"berth\":false,\"conscription\":false,\"mathematics\":false},\"favor\":500}]"

И как дальше с ним работать? Например мне нужно далее использовать значение “id”… Читал о simplejson и cjson, но так ничего и не понял…

Например в Php, после json_decode, значение “id” лежало бы в массиве к примеру jsondata…
reclosedev
Seganapa
Например в Php, после json_decode, значение “id” лежало бы в массиве к примеру jsondata…
Почитайте документацию http://docs.python.org/library/json.html
a = json.loads(jsondata)
# a  - теперь список со словарями
print a[0]['id']
Seganapa
Теперь понял… я пытался вывести
a['id']

Еще два вопроса
А для чего json.dumps? Гуглил, но толком так и не разобрался.
И как в python перебрать элементы массива (как в Php foreach)? или только циклом For?
reclosedev
Seganapa
А для чего json.dumps? Гуглил, но толком так и не разобрался.
А документация зачем?
http://docs.python.org/library/json.html#json.dumps

Seganapa
И как в python перебрать элементы массива (как в Php foreach)? или только циклом For?
http://docs.python.org/tutorial/controlflow.html

Прочитали бы хоть одну книжку целиком по Python, большая часть вопросов отпадет.
Seganapa
Правильно ли я понял

json.dumps - сериализирует данные
json.loads - десериализирует данные

? Не сильно дружу с техническим английским, а вся документация именно на нем…
Zerstoren
Seganapa. Python - совсем не PHP, прочитайте сначала книгу, чтоб понять как с работать.
Книга стоит всего 50$ (в Украине). Но толку от нее дофига.

Тема по выбору книгу находиться в прикрепленном топике, в этом-же разделе.
reclosedev
Seganapa
Правильно ли я понял

json.dumps - сериализирует данные
json.loads - десериализирует данные
да

Seganapa
Не сильно дружу с техническим английским, а вся документация именно на нем…
Придется подружиться, потому что документации на русском мало, но книги есть, в том числе и в свободном доступе:
http://ru.wikibooks.org/wiki/%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA_Python_2.6
http://ru.wikibooks.org/wiki/%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA_Python_3.1
http://diveinto.python.ru/toc.html

Ну и
Zerstoren
Тема по выбору книгу находиться в прикрепленном топике, в этом-же разделе.


Seganapa
Спасибо!
Про книги могу сказать одно - когда изучал PHP прочитал кучу книг, но без практики толку нет…
Только когда начал свой первый проект, стал по настоящему вникать в язык…
Прочту книгу Марка Лутца “Изучаем Python”, лишним уж точно не будет…

С python у меня проблема именно с техническим английским, т.к. я четко знаю свою задачу, и примерно как ее реализовать, но какими средствами…? Вся документация на английском, поэтому на форуме и спрашиваю, с надеждой на то, что помогут…

За три дня освоения Python'a я уже научился работать с requests, написал код достаточно непростой авторизации… Начился парсить ответ сервера и при помощи регулярок брать нужные значения…
Конечно все это благодаря Вам, форумчанам, а не книгам…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB