So I am trying to convert data from socket to json object. below is my python code that gets data from socket server.
import socket
HOST = "myHOST"
PORT = myPORT
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((myHOST, myPORT))
s.sendall(b" ")
buffer_size = 4096
print("Received: ")
while True:
data = s.recv(buffer_size)
print(repr(data))
s.close()
I am getting this data as an output:
Received:
b'2018-08-06T17:35:45.0612|power|ON|mode|MANUAL|execution|READY|Xact|215.13|Yact|331.34|Zact|22.16|Xcom|0.00|Ycom|0.00|Zcom|0.00|path_feedrate|0.00|line|0|Block|0|program|Plate 1_imported_dxf.ORD\n'
b'2018-08-06T17:35:45.0612|comms|NORMAL||||\n2018-08-06T17:35:45.0612|Sspeed|0.00\n'
And now I want to convert it to formatted json object so that i can later use it on my html with javascript. I tried to create json object within my while loop by:
import socket
import json
HOST = "myHOST"
PORT = myPORT
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((myHOST, myPORT))
s.sendall(b" ")
buffer_size = 4096
print("Received: ")
while True:
data = s.recv(buffer_size)
print(repr(data))
json_obj = json.loads(data)
print(type(json_obj))
print(json_obj.get("power").get("mode"))
s.close()
But i cant make it to work. I also tried to use json.dumps but no success. Please help guys! I also tried to make a dictionary but no success, getting error: ValueError: too many values to unpack (expected 2). Below is the snippet for my dictionary try:
while True:
data = s.recv(buffer_size).decode("utf-8")
print(data)
d = {}
for pair in data.replace(' ', '').split(', '):
k, v = pair.split('|')
d[k] = int(v)
print(d)
I want the answer to have key value pairs.
import socket
HOST = "myHOST"
PORT = myPORT
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((myHOST, myPORT))
buffer_size = 2048
print("Received: ")
while True:
devData = s.recv(buffer_size).decode("utf-8").split("|")
timeStamp = devData.pop(0)
devDict = dict(zip(*([iter(devData)]*2)))
print(devDict)
s.close()
And this is the result that I get:
Received:
{'power': 'ON', 'mode': 'MANUAL', 'execution': 'READY', 'Xact': '1113.21', 'Yact': '162.60', 'Zact': '0.00', 'Xcom': '0.00', 'Ycom': '0.00', 'Zcom': '0.00', 'path_feedrate': '0.00', 'line': '0', 'Block': '0', 'program': '37255 S1 D - .75 JET_imported_dwg.ORD\n'}
{'comms': 'NORMAL', '': '\n2018-08-07T20:40:05.0432', 'Sspeed': '0.00\n'}
{'program': '37255 S1 D - .75 JET_imported_CNC.ORD\n'}
{'power': 'ON', 'mode': 'MANUAL', 'execution': 'READY', 'Xact': '1113.21', 'Yact': '162.60', 'Zact': '0.00', 'Xcom': '0.00', 'Ycom': '0.00', 'Zcom': '0.00', 'path_feedrate': '0.00', 'line': '0', 'Block': '0', 'program': '37255 S1 D - .75 JET_imported_CNC.ORD\n'}
{'comms': 'NORMAL', '': '\n2018-08-07T20:43:57.0375', 'Sspeed': '0.00\n'}