Показать сообщение отдельно

  #6325  
Старый 09.08.2022, 13:40
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Цитата:
Сообщение от tr1ckster  

Подскажите пожалуйста, хочу ответ от сервера засунуть в lua_table и уже с помощью средств lua обращаться и получать данные.

Пример таблицы:





Код:
{
"Output"
:
{
"ok"
:
true
}
"Code"
:
123
}


Пример работы:





Код:
local
response
=
someFunc
(
...
)
print
(
response
[
"Output"
]
[
"ok"
]
)
--Должно быть true


Получаю ответ от сервера и записываю его в переменную response.

C++:





Код:
curl_easy_setopt
(
cURL
,
CURLOPT_WRITEFUNCTION
,
Utility
::
writeCallback
)
;
curl_easy_setopt
(
cURL
,
CURLOPT_WRITEDATA
,
&
response
)
;


С помощью nlohmann::json перевожу string в json.

C++:





Код:
nlohmann
::
json json
=
nlohmann
::
json
::
parse
(
response
)
;


Затем создаю таблицу, и возвращаю её. В итоге получаю, что это userdata, можно использовать .dump(), что-бы перевести в строку, но нельзя будет обращаться к этой таблице, прошу помощи😇

C++:





Код:
sol
::
table table
=
lua
.
create_table
(
)
;
table
[
"Output"
]
=
json
;
return
table
;

Как вариант ещё можешь написать некий класс Response, который будет принимать в себя json и возвращать sol::table

C++:





Код:
sol
::
table output
=
lua
.
create_table
(
)
;
output
[
"ok"
]
=
json
[
"ok"
]
;
sol
::
table table
=
lua
.
create_table
(
)
;
table
[
"output"
]
=
output
;
return
table
;
 
Ответить с цитированием