Above constitutes nearly the entire implementation of json and json-rpc base implementation from wire to channel and back to wire. boost::json on boost::beast on boost::asio. Next is to set up the message distributors and send templates on channels, to provide subscription and full abstraction from encodings for protocols. Then it's just protocols subscribing with strongly-typed handlers, making the queries and invoking send(...) with the resulting objects.
(edited)