2017-11-20 4 views
0

파이썬에서 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) 

이상한 일이 발생합니다

id 필드 데이터는 다음과 같은 스텁과 같습니다 JSON에서는 정수이지만 Python에서는이를 튜플에 매핑합니다.

enter image description here

객체의 생성자가 발생하지해야한다 : :

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=id 정수로 매핑하지만 갑자기 내 객체의 모든 튜플 포함되어 있음을 분명히 알 수 있습니다

enter image description here

: 입력

이 서브 - 객체 ID가 exampe 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) 

나는 완전히이에 잃었어요. 무엇이 이것을 일으킬 수 있습니까?

답변

4

self.idself.naam을 할당 한 행 다음에 쉼표가 있습니다. 그들을 제거하십시오.

a_string = 'string', 
type(a_string) 
>>> tuple 
1

행의 쉼표 :

self.id = id, 

터플 생성 리드. 다음 예를 참조하십시오.

a = 1 

b = 1 
c = 1, 

print(b) 
print(c) 
관련 문제