Je suis nouveau sur websockets et json ici en python. Je veux juste savoir comment convertir les données json en chaînes comme celle-ci

{'data': {'id': 26, 'level': 2, 'message': 'Something was Detected'}}

Dans

"26"
"2"
"Something was Detected"

Ou n'importe quel format juste pour en faire une chaîne.

Je reçois mes données json d'un websocket local, voici le code.

async with websockets.connect(url) as websocket:
        data = dict(topic='device:10', event="phx_join", payload={}, ref=0)
        await websocket.send(json.dumps(data))

        # Json data will be receive here
        message = await websocket.recv()

        # then it will be printed here
        print(message)

        # I need to convert the message into string

asyncio.get_event_loop().run_until_complete(hello('ws://localhost:4000/socket/websocket'))
1
YnotCoding 17 mars 2019 à 07:08

2 réponses

Meilleure réponse

Voilà comment j'ai obtenu la sortie souhaitée

async with websockets.connect(url) as websocket:
    data = dict(topic='device:10', event="phx_join", payload={}, ref=0)
    await websocket.send(json.dumps(data))

    # Json data will be receive here
    message = await websocket.recv()

    # then it will be printed here
    print(message)

    # The answer for the question
    message_json = json.loads(message)
    id = message_json['data']['id']
    print(id)
    level = message_json['data']['level']
    print(level)
    mes = message_json['data']['message']
    print(mes)
asyncio.get_event_loop().run_until_complete(hello('ws://localhost:4000/socket/websocket')
0
Keyur Potdar 17 mars 2019 à 15:36

Quelque chose comme ça:

data = json.loads(message)
list_of_strings = [str(v) for k, v in data['data'].items()]
0
Andrey Lukyanenko 17 mars 2019 à 05:11