2017-07-13 2 views
1

Ich versuche, ein JSON Objekt zu erstellen und an die Firebase Database mit python schicken, aber wenn ich das tue ich:Typeerror: Objekt vom Typ ‚Tag‘ ist nicht JSON serializable

TypeError: Object of type 'Tag' is not JSON serializable

Hier mein Code:

data = {'address': address, 
    'name': name 
    } 

print(type(data)) 
sent = json.dumps(data) 
result = firebase.post("/tHouse/houseTest", sent) 

das ist etwas falsch mit json.dumps(data) ist, da der Fehler hier draußen gerichtet ist. Running print(type(data)) kehrt zurück <class 'dict'>.

Auch die name und address vorab

+2

Was sind die Arten von 'address' und' name'? – Barmar

+0

mit 'address =" address "', 'name =" name "' Ihr Code funktioniert gut bis 'json.dumps (data)' Fügen Sie vollständige Traceback hinzu, damit jemand helfen kann – Rahul

+0

'name' ist' String', aber 'Adresse 'scheint' 'bs4.element.Tag'' zu sein ... kann ich' str (address) 'einfach machen, um das zu beheben? – John

Antwort

3

gesetzt wird, um eine bs4.element.Tag, address nicht zu JSON serialisiert werden.

Wie Sie damit umgehen, hängt davon ab, welchen Teil des Tags Sie in Ihrer Datenbank speichern möchten. Wenn Sie einfach str() auf dem Tag aufrufen, enthält die Ausgabe das XML/HTML-Markup. Wenn Sie den Text innerhalb des Tags erhalten möchten, greifen Sie auf das .text-Attribut zu, z.

from bs4 import BeautifulSoup 

soup = BeautifulSoup('<address>1 Some Street Somewhere ABC 12345</address>') 
address = soup.address 

>>> type(address) 
<class 'bs4.element.Tag'> 
>>> str(address) 
'<address>1 Some Street Somewhere ABC 12345</address>' 
>>> address.text 
u'1 Some Street Somewhere ABC 12345' 

dies könnte also sein, was Sie tun müssen:

data = {'address': address.text, 'name': 'Some One'} 
>>> json.dumps(data) 
'{"name": "Some One", "address": "1 Some Street Somewhere ABC 12345"}' 
+0

das mein Problem gelöst hat –

Verwandte Themen