Robię pewien projekt na #esp8266 i #websocket Serwer jest postawiony na nodej.js i socket.io
Nigdy nie pisałem w C++, i natknąłem się na taki problem. Dostaję na esp wiadomość w takiej formie(fotka poniżej), i potrzebuję to rozdzielić na dwie zmienne. Na grafice zaznaczyłem o co chodzi. Do parsowania JSONa mam już bibliotekę. Myślałem nad RegExpami, ale może jest jakieś inne rozwiązanie. Ktoś coś? (。◕‿‿◕。)
@GotoFinal: właśnie nie (bo tam jest przecinek zamiast :) dlatego uważam że mógł przemysleć w jaki sposób te dane wysyła @digitallord: typ wiadomości mozesz spokojnie wpakować do jednego obiektu, sporo zachodu ci to zaoszczędzi
@digitallord: to zmień tego parsera bo jakiegoś gównianego wybrałeś, ewentualnie dodawaj z przodu np {"data": zamiast tylko {, ale to brzydkie. Zmień parser na normalny.
@GotoFinal: Problem w tym, że to jedyna biblioteka pod PlatformIO ;/ Ogarne to inaczej. Powiedz mi tylko jak z tego: " 42[{"color":"#000080"}] " w c++ najłatwiej usunąć trzy pierwsze i jeden ostatni znak.
@digitallord: nie wiem, zerknij do dokumentacji stringa w cpp :P ja tam prawie nic w cpp nie piszę więc nie znam takich rzeczy na pamięc, ale pewnie da się jakoś podzielić po indexie, ewentualnie ręcznie w pętli przekopiować znaki.
Serwer jest postawiony na nodej.js i socket.io
Nigdy nie pisałem w C++, i natknąłem się na taki problem.
Dostaję na esp wiadomość w takiej formie(fotka poniżej), i potrzebuję to rozdzielić na dwie zmienne. Na grafice zaznaczyłem o co chodzi. Do parsowania JSONa mam już bibliotekę. Myślałem nad RegExpami, ale może jest jakieś inne rozwiązanie. Ktoś coś? (。◕‿‿◕。)
#programowanie
no ale to przecie dalej zwykly json, więc sparsuj i weź 1 element z tablicy i drugi
@digitallord: typ wiadomości mozesz spokojnie wpakować do jednego obiektu, sporo zachodu ci to zaoszczędzi
Kurde. Niestety za pomocą tej biblioteki nie idzie tego sparsować.
Coś takiego wchodzi normalnie:
{"hello":"world"}
Ale tak już nie
{["news",{"hello":"world"}]}
___
Właśnie problem w tym że z poziomu socket.io nie mam chyba za bardzo możliwości zmiany sposobu pakowania tego ;/
Ogarne to inaczej. Powiedz mi tylko jak z tego: "
42[{"color":"#000080"}]
" w c++ najłatwiej usunąć trzy pierwsze i jeden ostatni znak.erase zwraca:
'class String' has no member named 'erase'