[json] Using boost.json with boost.beast

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[json] Using boost.json with boost.beast

Boost - Users mailing list

Hi,

 

Are there any samples of using boost.json to deserialize boost.beast responses?

Thanks,

Sean.


_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply | Threaded
Open this post in threaded view
|

Re: [json] Using boost.json with boost.beast

Boost - Users mailing list


On Tue, 22 Dec 2020 at 21:21, Sean Farrow via Boost-users <[hidden email]> wrote:

Hi,

 

Are there any samples of using boost.json to deserialize boost.beast responses?


Not in the documentation of the two libraries as they are treated as separate self-contained concerns.

However it’s quite trivial.

The data() member of a flat_buffer contains a pointer and a size. Cast the pointer to const char * and use it and the size to construct a json::string_view.
From there you can call json::parse to get your json::value.

Thanks,

Sean.

_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
--
Richard Hodges
office: +442032898513
home: +376841522
mobile: +376380212


_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply | Threaded
Open this post in threaded view
|

Re: [json] Using boost.json with boost.beast

Boost - Users mailing list


On Tue, 22 Dec 2020 at 21:25, Richard Hodges <[hidden email]> wrote:


On Tue, 22 Dec 2020 at 21:21, Sean Farrow via Boost-users <[hidden email]> wrote:

Hi,

 

Are there any samples of using boost.json to deserialize boost.beast responses?


Not in the documentation of the two libraries as they are treated as separate self-contained concerns.

However it’s quite trivial.

Here's a simple example:

extern void use_json(boost::json::value const& jv);

void handle_read_text(boost::beast::flat_buffer& buf)
{
    auto range = buf.data();
    auto chars = boost::json::string_view(
        reinterpret_cast<const char*>(range.data()),
        range.size());
    auto dom = boost::json::parse(chars);
    use_json(dom);
}


The maintainers of beast and json are always available on the cpplang slack, in channel #beast.


The data() member of a flat_buffer contains a pointer and a size. Cast the pointer to const char * and use it and the size to construct a json::string_view.
From there you can call json::parse to get your json::value.

Thanks,

Sean.

_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
--
Richard Hodges
office: +442032898513
home: +376841522
mobile: +376380212



--
Richard Hodges
office: +442032898513
home: +376841522
mobile: +376380212


_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users