Hi @asn11
It Depends on your requirement
a) If you want to expose only a snippet of text then Using Content Fragment you can directly expose as Json.Also you can create a Content Fragment Model if you need additional widgets without layout.Content Fragment need not be part of any page content inorder to expose the json this can be done using asset api.
b) Similarly if you want to expose a content with layout then you cant use Content fragment in that case you use Experience Fragment in which you can add multiple components and expose as JSON OOTB.
Irrespective of the author placing the page components you can control the exposing of required JSON structure like which components and which data in that component using Graphql itself.
Hope this helps.
Regards,
Rajashankar.R
c) You can also create a page with set of components and control what data you want to expose from components using JSON exporter at component level. or else you can use ootb json model to expose the page json along with components
d) You can also create a custom Servlet which can expose the json structure.
Now for all of the above methods you can use Graphql as a middle layer as a wrapper on top of it and expose only required data elements in this json.