使用 jsoup 从头部解析 json

Parse json from head with jsoup

我想从这个 url 中获取 json 例如“https://www.imdb.com/title/tt9598834/”

这是代码: 暂停乐趣 getRealRating(imdbCode: String): String = suspendCoroutine { cont ->

        val url = "https://www.imdb.com/title/tt9598834/"
        var document: Document? = null

        try {
            document = Jsoup.connect(url).get()
        } catch (e: IOException) {
            e.printStackTrace()
        }
        cont.resume("")
    }

我可以看到

document.head().allElements[0]

包含

script type="application/ld+json"

具有 json 电影数据。我怎样才能得到这个 json 作为字符串?

您可以执行以下操作(Java 不是 Kotlin,但应该差别不大):

Document doc = Jsoup.connect(url).get();
// In this case you want the first script tag
Element e = doc.select("script").first();
String s = e.html();

System.out.println(s);

我得到的部分输出:

{"@context":"https://schema.org","@type":"Movie","url":"/title/tt9598834/","name":"The Xrossing","image":

如果你有多个这样的元素,你可以使用-

Elements el = doc.select("script[type=application/ld+json]");

然后遍历结果:

for (Element e : el) {
        System.out.println(x.html());           
}