Schema should describe reality
Structured data is a description of the page, not a wish about it. Google's guidelines are explicit that markup must represent content visible to the user, and the common failure mode is not a syntax error — it is FAQPage markup on a page with no FAQ, or Product markup with a review count nobody can find.
The practical test before publishing: for every field in the JSON-LD, point at the place on the rendered page a visitor would read it. If you cannot, remove the field. Valid markup that lies is worse than no markup at all, because the penalty is applied to the domain rather than the snippet.