Итак, я пытаюсь получить строковое представление сообщения JSON на Голанге.Я просто хочу получить JSON в кодировке пакета сообщений, изменить некоторые значения и отправить его обратно.
Я не нашел простого способа сделать это.В большинстве случаев Я не могу заранее знать, какова структура JSON (кроме структуры JSON), поэтому я хочу получить двоичное сообщение.Расшифруйте его как JSON, напечатайте как строку для стандартного вывода, измените содержимое, снова конвертируйте его в MessagePack и отправьте обратно.
Я просматривал эти два пакета, но я нене знаю, как правильно использовать их для такой простой задачи, как:
Так что я получу что-то вродеэто:
DF 00 00 00 01 A7 6D 65 73 73 61 67 65 A3 48 69 21
Я хочу напечатать это:
{"message": "Hi!"}
Измените "Привет!":
{"message": "Hello Sir!"}
Отправить как пакет сообщений:
DF 00 00 00 01 A7 6D 65 73 73 61 67 65 AA 48 65 6C 6C 6F 20 53 69 72 21
Текущий код Python, который я пытаюсь перенести на Golang:
def decode_msgpack(jsonData):
packedStuff = 0
for key in jsonData.keys():
if type(jsonData[key]) is bytes:
packedStuff += 1
try:
jsonData[key] = umsgpack.unpackb(jsonData[key])
except umsgpack.InvalidStringException:
try:
jsonData[key] = umsgpack.unpackb(jsonData[key], allow_invalid_utf8=True)
except umsgpack.InsufficientDataException:
print("[!] InsufficientDataException")
jsonData[key] = base64.b64encode(jsonData[key]).decode('utf-8')
else:
jsonData[key] = base64.b64encode(jsonData[key]).decode('utf-8')
if packedStuff > 0:
return decode_msgpack(jsonData)
else:
return jsonData