Я не испытываю в Python и запутываюсь типами данных.Python Int32 to JSON
Я получаю поле типа Int32 от ROS (http://wiki.ros.org/msg), которые мне нужно сделать, чтобы быть частью JSON, но json.dumps терпит неудачу из-за типа Int32:
json.dumps(angle)
TypeError: data: 72 is not JSON serializable
Casting Int32 в целое число не может тоже, например, при использовании:
angle = int(angle or 0)
TypeError: int() argument must be a string or a number, not 'Int32'
есть ли способ, чтобы изменить тип переменной от пользовательского типа к стандартной? Я не могу изменить источник, где я его получаю.
EDIT: Спасибо другим, что сообщения об ошибке на самом деле говорят «TypeError: data: 72 не является сериализуемым JSON» - показывает, что эта переменная фактически имеет значение «data: 72», а из-за моей неопытности с Python я думал, что часть данных «data:» сообщения об ошибке была получена из ошибки, а не из переменной. Думаю, было бы более очевидно, если бы были использованы котировки:
TypeError: "data: 72" is not JSON serializable
Во всяком случае, это, очевидно, ошибка новобранец. Извиняюсь.
'print repr (angle)' и разместить то, что он говорит –
Как вы его получаете от ROS? –
@JoranBeasley print repr (angle) дал «данные: 72» –