nlohmann / json uWebsocket - PullRequest
       4

nlohmann / json uWebsocket

0 голосов
/ 25 сентября 2018

Для проекта я хочу использовать библиотеку uNetworking/uWebSockets в сочетании с библиотекой nlohmann/json.

Пока это мой код:

#include <uWS/uWS.h>
using namespace uWS;
using json = nlohmann::json;

int main() {
    Hub h;

    h.onMessage([](WebSocket<SERVER> *ws, char *message, size_t length, OpCode opCode) {
        json parsed = json::parse(message);
        ws->send(message, length, opCode);
    });

    if (h.listen(3000)) {
        h.run();
    }
}

Я получаюэта ошибка при разборе сообщения (что подтверждается JSON):

libc++abi.dylib: terminating with unexpected exception of type nlohmann::detail::parse_error: [json.exception.parse_error.101] parse error at 37: syntax error - invalid literal; last read: '"{ \"happy\": true, \"pi\": 3.141 }"o'; expected end of input

Пока я застрял.

Заранее спасибо.

Тео

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Вы, кажется, анализируете

"{ \"happy\": true, \"pi\": 3.141 }"o

Есть несколько проблем:

  • кавычки вокруг объекта JSON кажутся непреднамеренными - результатом будет строка, а не объект
  • o после строки неожиданно, отсюда и сообщение об ошибке;обратите внимание, что o является прочитанным 37-м символом, следовательно, parse error at 37
0 голосов
/ 25 сентября 2018

Я не смог найти никакой документации для uWebSockets, но предположительно, поскольку onMessage имеет параметр length message не обязательно завершен нулем.Поэтому вам нужно будет сделать:

json parsed = json::parse(message, length);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...