JSON строка над сокетом

1

Я новичок в использовании json, мне нужно отправить "данные", как указано,

import json, socket

data = '{"command":"off"}'

_send(socket, data)

def _send(socket, data):
   try:
       serialized = json.dumps(data).replace('\\','')
   except (TypeError, ValueError) as e:
      raise Exception('You can only send JSON-serializable data')
  # send the length of the serialized data first
  socket.send(('%d\n' % len(serialized)))
  # send the serialized data
  socket.sendall(serialized)#.encode('utf-8'))

на сервере мне нужны данные, как показано ниже,

{"command":"off"}

но сервер получил данные, как показано ниже,

"{"command":"off"}"20

как удалить дополнительные строки.

  • 0
    Что произойдет, если вы удалите одиночные кавычки из data , превратив их в словарь?
  • 0
    Когда я удаляю одинарные кавычки, я получаю сообщение об ошибке, поскольку «аргумент sendall () 1 должен быть строкой или буфером, а не dict»
Теги:

1 ответ

0

Ваши данные представляют собой строку, но сервер ожидает объект. Попробуйте отправить его вместо этого.

data = {"command":"off"} # note this is a python dictionary

def _send(socket, data):
   try:
       serialized = json.dumps(data) # no stripping necessary
   except (TypeError, ValueError) as e:
    ...

Эта строка была красным флагом json.dumps(data).replace('\\','') Это обычно означает, что вы случайно закодировали строку, когда вы хотели кодировать объект.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню