Your problem is smart quotes. You use them. JSON can't have them. JSON has to have regular old dumb quotes. Up until line 10, you use the correct quotation marks, but then at line 10 you switch to using fancy slanted quotation marks.
The solution is to use find and replace to find the smart quotes and replace them with dumb quotes. I would also clean ...
Depending on the data structure on the page, you can apply markup both for the entire page as a whole, and for individual data blocks.
For educational application, you can use the following data schema. However, be careful! You must follow these guidelines to be eligible to appear in the job training experience on Google.
API Google Knowledge Graph scrapes structured data which in turn for images Google supports for the following types:
It is not clear from your question what type your image is.
You can use these Google guidelines for your images:
To non-amp: For best results, provide multiple high-resolution images
(minimum of 300,000 pixels ...
Is this for a single review of a product (Review.itemReviewed->Product), or a product with reviews (Product.review->Review)?
In the guidelines:
"However, if the review is nested into another schema.org type using the review property, you can omit the itemReviewed property."
That gets you out of the matrix.
In the Guide for Review, Google tells us that a nested review may be appropriate for a product and shows an example including the example in microdata format:
<div itemscope itemtype="https://schema.org/Product">
<img itemprop="image" src="https://example.com/photos/1x1/catcher-in-the-rye-book-cover.jpg" alt="...