it-swarm.com.de

So senden Sie ein Json-Objekt mit TCP-Socket in Python

hier ist mein Python-TCP-Client. Ich möchte ein Json-Objekt an den Server senden. Aber ich kann das Objekt nicht mit der sendall () -Methode senden. Wie kann ich das machen?

import socket
import sys
import json

Host, PORT = "localhost", 9999

m ='{"id": 2, "name": "abc"}'
jsonObj = json.loads(m)


data = jsonObj

# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    # Connect to server and send data
    sock.connect((Host, PORT))
    sock.sendall(jsonObj)


    # Receive data from the server and shut down
    received = sock.recv(1024)
finally:
    sock.close()

print "Sent:     {}".format(data)
print "Received: {}".format(received)
5

Überspringen Sie den json.loads()-Teil. Senden Sie das Json-Objekt als Json-String und laden Sie es aus dem String des TCP -Clients.

Überprüfen Sie auch Folgendes: Python sendet Wörterbuch durch TCP

3

AS können Sie aus Python-sendendem Wörterbuch über TCP .__ erfahren. Es empfiehlt sich, das JSON-Objekt in ein Wörterbuch zu konvertieren und das folgende Snippet verwenden 

import json
data = json.load(open("data.json"))
 //or 
data = json.load('{"id": 2, "name": "abc"}')

type(data)
print(data[<keyFromTheJsonFile>])

Sie sollten es mit pickle serialisieren:

import pickle
dict = {...}
tcp_send(pickle.dumps(dict))

Und am anderen Ende:

import pickle
dict = pickle.loads(tcp_recieve())

Wenn das andere Ende nicht in Python geschrieben ist, können Sie ein Datenserialisierungsformat wie xml , json oder yaml verwenden.

1
Yusef Mohamadi