Разбор данных JSON в Python

JSON — это читаемый человеком текстовый формат данных. Он не зависит от языка и используется для обмена данными между приложениями.В этой статье мы объясним, как анализировать данные JSON в Python.

 

Python JSON

Модуль json позволяет кодировать и декодировать данные JSON является частью стандартной библиотеки Python.

JSON — это строка, представляющая данные. Кодирование или сериализация означает преобразование объекта Python в строку JSON, которую можно сохранить в файле или передать по сети. Декодирование или десериализация — обратный процесс кодирования, когда строка JSON преобразуется в объект Python.

Ниже приведена таблица, показывающая объекты Python и их эквивалентное представление JSON:











PythonJSON
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull

 

Для работы с JSON просто импортируйте модуль вверху файла:

import json


 

Кодировка JSON в Python

Модуль json имеет два метода для кодирования объектов Python в JSON отформатированных строк: dump() и dumps().

Метод dump() отправляет вывод в файл-подобный объект. Он принимает два позиционных аргумента: объект, который должен быть закодирован, и объект в виде файла. Вот пример:

data = {

    "country": "Russia",

    "vehicle": {

        "name": "Volkswagen",

        "model": "T-Roc"

    }

}



with open("file.json", "w") as file:

    json.dump(data, file)


 

Если вы запустите скрипт, он создаст файл с именем file.json:

file.json

{"country": "Russia", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}


 

Метод dumps() работает так же, как и dump(), но вместо того, чтобы послать вывод в файл-подобный объект, он возвращает строку:

data = {

    "country": "Russia",

    "vehicle": {

        "name": "Volkswagen",

        "model": "T-Roc"

    }

}



json.dumps(data)


 

'{"country": "Russia", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'


 

Оба метода принимают одинаковые ключевые аргументы. Например, если вы анализируете или отлаживаете данные JSON, вы можете указать уровень отступа:

data = {

    "country": "Russia",

    "vehicle": {

        "name": "Volkswagen",

        "model": "T-Roc"

    }

}



print(json.dumps(data, indent=2))


 

{

  "country": "Russia",

  "vehicle": {

    "name": "Volkswagen",

    "model": "T-Roc"

  }

}


 

Расшифровка JSON в Python

Для того, чтобы преобразовать JSON закодированные данные в объекты Python, использовать методы load() и loads().

Метод load() считывает структуру JSON из файла типа объекта и преобразует его в объект Python.

Допустим, у нас есть следующий файл JSON:

file.json

[

  {

    "userId": 1,

    "id": 1,

    "title": "Meet with Lisa",

    "completed": true

  },

  {

    "userId": 1,

    "id": 2,

    "title": "Design a prototype",

    "completed": false

  }

]


 

Чтобы преобразовать данные JSON в представление Python, вы должны использовать что-то вроде этого:

import json



with open('file.json') as f:

  data = json.load(f)



type(data)


 

JSON преобразуется в список Python, который вы можете использовать в своем коде:

<class 'list'>


 

Метод loads() преобразует строку, содержащую документ JSON на объект Python:

import json



json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'



print(json.loads(json_str))


 

Строка преобразуется в словарь Python:

{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}


 

Вот более сложный пример, который показывает, как сделать запрос API и декодировать данные JSON:

import json

import requests



response = requests.get("https://jsonplaceholder.typicode.com/users")

users = json.loads(response.text)



print(users)


 

Вывод

Мы рассказали вам, как кодировать и декодировать данные JSON в Python.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-06-29T10:06:00
Python

Медитация — как сделать отдых продуктивным

медитацияСколько раз приходилось нам слышать: «Расслабься! Нервные клетки не восстанавливаются» или «Не волнуйся, все будет хорошо». Сколько раз мы слышали и не верили. Не перенастраивались на позитивный лад, и продолжали вместо этого закапываться в свои проблемы и переживания еще глубже. Помогало? Едва ли.

Беда вся в том, что не умеем мы толком расслабляться. Работа замучила, рутина заела, все плохо? Ждем выходных. Как их проводим? В рутине домашней, в хлопотах и посиделках перед «голубым экраном». Чего удивляться, что воскресенье пролетает незаметно, а впереди — долгая неделя… бр-р-р! Читать

Завершение сеанса тайского массажа

Тайский массаж
Окончательного расслабления массажист, практикующий традиционный тайский массаж, обычно добивается массажем лица в Шавасане. При этом пациент ложится на спину и максимальным образом расслабляется в Шавасане или так называемой «позе трупа». Читать

Обзор роботов

Уборка квартиры до сих пор оставалась самым рутинным и надоедливым занятием в доме.

Если с мытьём посуды и стиркой достаточно успешно справляются машины-автоматы, то пылесосить ковры приходится вручную, таская за собой по квартире шумный и громоздкий пылесос. Нам всегда хотелось, хоть как-то, облегчить свою рутинную жизнь и освободить свое время от домашних хлопот. С появлением робототехники, разработчикам пришла в голову идея о создании роботов-пылесосов, которые могли бы уборку полов взять на себя и позволить нам заниматься своими делами. Читать

Комнатный гранат


Красивый кустик граната карликового украсит любое помещение. Его нежно-зеленые листья, ярко-красные цветы и небольшие плоды, вписываются в интерьер комнаты при условии, что помещение достаточно просторное, и кустик будет находиться на солнечном месте. Поливать нужно обильно, любит гранат и опрыскивание водой, но и засухи он не боится. Читать

Теоретические основы тестирования на проникновение (pentest) Часть I Введение

Что такое тестирование на проникновение?

Для начала предлагаем разобраться, что же такое тестирование на проникновение? В это статье  мы рассмотрим, что такое тестирование на проникновение или пентест и почему это важно. Затем мы рассмотрим различные типы тестов на проникновение и различные подходы, которые используются специалистами по информационной безопасности. Национальный институт безопасности и технологий определяет пентестинг,  как тестирование системы безопасности, в ходе которого эксперты имитируют реальные атаки для выявления методов обхода выстроенной системы безопасности приложения, инфраструктуры или сети. Это зачастую включает в себя использование реальных атак на системы, которые находятся в промышленной эксплуатации, а также атаки с целью получения доступа к конфиденциальной информации с помощью инструментов и методов, обычно используемых хакерами. Теперь, когда кибератаки становятся нормой, как никогда важно регулярно проводить сканирование уязвимостей и тестирование на проникновение, чтобы выявить уязвимости и убедиться, что выстроенная система информационной безопасности работает. Учитывая тот факт , что реальные атаки на системы в проде это не то, что будет выполняться ежемесячно или ежеквартально. Многие компании неохотно проводят пентест, например 1 раз в год , скажем так для галочки , игнорируя важность этих мероприятий для бизнеса.

Теперь, когда мы подсветили важность пентеста нам нужно опеределить различные подходы, которые мы можем использовать для проведения теста на проникновение. Один тест на проникновение в разных компаниях не даст нам одинаковый результат, потому что каждая компания использует разные инструменты, системы, приложения. Ключевой принцип здесь – это гибкость в своих подходах. Как известно, восемьдесят процентов атак происходит внутри компании, поэтому важно протестировать систему, в роли сотрудника или бывшего (возможно обиженного) сотрудником. Уже имея доступ к некоторым из информационных систем мы можем продвинуться дальше, чем, скажем, если бы мы были внешним хакером, который просто использовал бы наиболее популярные инструменты. Следующий подход-это просмотр веб-или мобильных приложений, . Эти методы обычно включают в себя проверку на безопасность кода и соответствия политике информационной безопасности. Существует множество попыток аутентификации и взлома паролей, не стоит забывать и про социальную инженерию. Сама по себе социальная инженерия создает направлена на психологические аспекты внутри кого-то, чтобы получить доступ к информации, которую вы обычно не получили бы. Исторически мы знаем социальную инженерию как фишинговые атаки по электронной почте, но атаки также могут быть телефонными звонками и др.

Часто это делается путем угроз, ультиматумов, дезинформации, создания ощущения срочности, эскалации и создания ситуации, в которой вы заставляете кого-то разглашать информацию или получать доступ к чему-то, к чему вы обычно не имеете доступа. Дальше идут беспроводные сети. Допустим, мы знаем, что большинство компаний будут иметь внутреннюю беспроводную сеть для всех своих сотрудников, поэтому очень важно, чтобы мы проверили ее и убедились, что она соответствует политике информационной безопасности. Поскольку каждый сотрудник подключается к этой внутренней сети, часто они пытаются использовать свои собственные устройства, будь то телефоны или ноутбуки. Таким образом, все они становятся объектами атак, которые мы можем проверить. Даже за пределами работы многие вещи на сегодняшний день подключены к интернету, будь то веб-камеры, термостаты или даже кофеварки. Другими словами, необходимо рассмотреть все различные подходы, которые мы имеем в своем распоряжении.

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

Как я уже упоминал в первоначальном определении пентестинга, тесты на проникновение могут выполняться в различных приложениях, сетях и системах, а также на мобильные устройства и различные операционные системы. Хотя каждый из этих различных подходов может отличаться, методология, которую мы используем, остается  одной, так как, всегда будет начальная фаза — это планирования, когда вы пишите договор, соглашение с компанией, которое определит масштаб атаки, и поскольку вы атакуете реальную систему, очень важно, чтобы вы установили очень строгие границы и очень четко определили, что может произойти, а что нет. Как только у вас есть план, где прописано то, что вы хотите сделать, последует стадия разведки или обнаружения, где вы получите как можно больше информации, как активно, так и пассивно. Как только вы почувствуете, что у вас достаточно информации, вы перейдете к эксплутации уязвимостей. Затем, когда атака завершена или вы выполнили все, что вы намеревались выполнить на этапе планирования приходит время составления отчета, где чрезвычайно важным для заказчика является отражением того какие атаки были успешными, а какие нет.



2020-06-26T15:43:06
Аудит ИБ