Encoding data in JSON is popular for sending data over the Internet, and also for storing data.
You can encode a Python List or dictionary in JSON format and then decode it back into a list or dictionary as illustrated in the diagram below:
Note: if you prefer video then I’ve create a YouTube video that covers this- How to Encode, Send and Receive JSON Data Using the Pythom MQTT Client
You will first need to import the json module
To encode a python dictionary or list use json.dumps(data) as show below:
data_out=json.dumps(brokers_out) # encode object to JSON
To convert from a JSON string to a Python object use json.loads(json_string) as show below:
m_in=json.loads(m_decode) #decode json data
I’ve created a simple Python script that demonstrates the process.
The first part of the script encodes and decodes a Python Dictionary.
The second part of the script encodes a Python Dictionary Publishes the Data to the MQTT broker, then receives the data and decodes it back into a dictionary.
You can download the demo script using the link below
Here is a screen shot of what it looks like when run.
Notice the Python objects is converted to a string by the json.dumps() function.
Now we run the second part of the script which publishes the JSON data and then receives the Data and decodes it back into a dictionary.
Here is the on_message Callback which receives the messages and converts it to a dictionary.
def on_message(client, userdata, msg): topic=msg.topic m_decode=str(msg.payload.decode("utf-8","ignore")) print("data Received type",type(m_decode)) print("data Received",m_decode) print("Converting from Json to Object") m_in=json.loads(m_decode) #decode json data print(type(m_in)) print("broker 2 address = ",m_in["broker2"])
Using the Python Command Line
When working on decoding complex JSON strings I find it useful to paste the string into a Python command line and use it to decode the string.
The following screen shots illustrate this process.
Python List to JSON
Python Dictionary to JSON
JSON to Python
Below shows the JSON strings b and d being converted back to Python objects:
JSON is a very popular format for encoding data and sending it across networks and also for storing it.
Python makes it easy to create JSON encoded data strings and to decode them.
Related Tutorials :
- My Python Working Notes
- Send JSON Data using the Mosquitto_pub client
- Send a File Using MQTT -MQTT Examples
- Encrypting MQTT Payloads with Python – Example Code
- Simple Python MQTT Data Logger