2015-05-22 3 views
0

У меня есть сокет в C отправкой этого char[] (String) через TCP сокет:Проблемы разбор JSON в Python

{"time":0, "latitude":0.0000000, "longitude":0.0000000, "heading":0.000000, "roll":0.000, "pitch":0.000, "yaw":0.000} 

Похоже, что он должен быть признан действительным JSON в моем клиенте Python, но работает:

parsed = json.loads(sock.recv(1024).decode('utf-8')) 

Формирует следующее сообщение об ошибке:

ValueError: Extra data: line 1 column 117 - line 1 column 1024 (char 117 - 1024

Может быть, C бросает в некоторых дополнительные биты, которые Python не нравится.

Полагая, что это так, я пытаюсь позвонить decode('ascii', 'ignore') на входной строке, надеясь, что это выведет эти символы, но до сих пор ничего не работало.

Любая помощь была бы принята с благодарностью!

+0

Каково это при печати? –

+0

Если я печатаю 'sock.recv (1024) .decode ('utf-8')' I get '{« time »: 0,« широта »: 0,0000000,« долгота »: 0,0000000,« заголовок »: 0,000000, roll ": 0.000," pitch ": 0.000," yaw ": 0.000}', как и следовало ожидать. –

+2

@JamesTaylor: и что, если вы используете 'print repr (sock.recv (1024) .decode ('utf-8'))'? –

ответ

2

Распространено должны использовать:

.strip('\x00') 

в Python, чтобы удалить нулевые терминаторы из строки C.

Смежные вопросы