Як перетворити рядкові дані в ціле за допомогою модуля json у словнику?

Я керую смарт-лампочками і публікую їх статус в приладовій панелі UI, як статус отримую рядок даних "ON" і "OFF", але замість цього рядка дані я хочу отримати цілі числа 1 і 0 , чи є все одно я можу перетворити ці дані рядка в цілі дані, використовуючи модуль JSON в словнику Python.

Деякі з коду API моїх розумних ламп тут

 if (_deviceUrl.getcode() == 200):
     data = _deviceUrl.read().decode("utf-8")
     # Use the json module to load the string data into a dictionary
     _theJSON = json.loads(data)
     # 1. status
     devicedata['on'] = self.on_dict[_theJSON["action"]['on']]
     # 2. brightness convert to %
     devicedata["bri"] = int(round(float(_theJSON["action"]["bri"]) * 100/255, 0))
0
Звичайним способом є використання функції int() : тобто int ("123") -> 123 .
додано Автор martineau, джерело

5 Відповіді

Один із способів замінити рядок цілим числом, таким чином, щоб визначити окремий словник:

ints = { 'OFF': 0, 'ON': 1 }

Наприклад, якщо значенням d ['action'] ['status'] є рядок "ON", то ints [d ['action'] ['status']]] повертає ціле число 1.

0
додано

Я створив приклад, якщо це допомагає:

import ast
data = "[{'action':{'status':'ON'}}, {'action':{'status':'OFF'}}]"
data = ast.literal_eval(data)
data
# [{'action':{'status':'ON'}}, {'action':{'status':'OFF'}}]

for i in range(len(data)):

    if data[i]['action']['status'] == 'ON':
        data[i]['action']['status'] = 1
    else:
        data[i]['action']['status'] = 0
data
# [{'action': {'status': 1}}, {'action': {'status': 0}}]
0
додано

Я створив приклад, якщо це допомагає:

import ast
data = "[{'action':{'status':'ON'}}, {'action':{'status':'OFF'}}]"
data = ast.literal_eval(data)
data
# [{'action':{'status':'ON'}}, {'action':{'status':'OFF'}}]

for i in range(len(data)):

    if data[i]['action']['status'] == 'ON':
        data[i]['action']['status'] = 1
    else:
        data[i]['action']['status'] = 0
data
# [{'action': {'status': 1}}, {'action': {'status': 0}}]
0
додано

Можна використовувати наступну конструкцію:

devicedata["on"] = 1 if _theJSON["action"]["on"] == "ON" else 0

Це досить зрозуміло.

0
додано

Можна використовувати наступну конструкцію:

devicedata["on"] = 1 if _theJSON["action"]["on"] == "ON" else 0

Це досить зрозуміло.

0
додано
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;

ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram