在python中,我收到JSON数据。数据类似于以下存根:
{
"id": 1,
"naam": "4.13",
"ruimte_temperatuur_sensor": {...},
// etc
}
我将这个json映射到一个对象(注意传感器已经映射):
ruimte = Ruimte(id=id,
naam=naam,
ruimte_temperatuur_sensor=temperatuur_sensor,
ruimte_humiditeit_sensor=humiditeit_sensor,
ruimte_beweging_sensor=beweging_sensor,
airco_temperatuur_sensor=airco_sensor,
radiator_temperatuur_sensor=radiator_sensor)
最奇怪的事情发生了:
JSON中的id
字段是一个整数,但Python将其映射到元组。在我的调试器中,您可以清楚地看到id=id
映射到一个整数,但突然间我的对象包含一个元组:
对象的构造函数不应该导致:
class Ruimte:
def __init__(self,
id: int,
naam: str,
ruimte_temperatuur_sensor: Sensor,
ruimte_humiditeit_sensor: Sensor,
ruimte_beweging_sensor: Sensor,
airco_temperatuur_sensor: Sensor,
radiator_temperatuur_sensor: Sensor):
self.id = id,
self.naam = naam,
self.ruimte_temperatuur_sensor = ruimte_temperatuur_sensor
self.ruimte_humiditeit_sensor = ruimte_humiditeit_sensor
self.ruimte_beweging_sensor = ruimte_beweging_sensor
self.airco_temperatuur_sensor = airco_temperatuur_sensor
self.radiator_temperatuur_sensor = radiator_temperatuur_sensor
在子对象中,id不会被解析为元组,例如ruimte.airco_temperatuur_sensor.id
是一个整数:
但JSON的解析方式相同:
def _parse_json_to_sensor(self, json: dict) -> Sensor:
id = json["id"]
type = SensorType(json["type"])
meet_interval_sec = json["sensorInstelling"]["meetIntervalSec"]
opslaan_interval_sec = json["sensorInstelling"]["opslaanIntervalSec"]
sensor = Sensor(id=id,
type=type,
meet_interval_sec=meet_interval_sec,
opslaan_interval_sec=opslaan_interval_sec)
我完全迷失了。可能导致这种情况的原因是什么?
答案 0 :(得分:4)
您在分配self.id
和self.naam
的行后面有逗号。删除它们。
a_string = 'string',
type(a_string)
>>> tuple
答案 1 :(得分:1)
该行中的逗号:
self.id = id,
导致创建元组。见这个例子:
a = 1
b = 1
c = 1,
print(b)
print(c)