gpt4 book ai didi

java - 如何使用 Jsoup 和 Gson 提取 JSON 字段

转载 作者:行者123 更新时间:2023-12-02 02:21:20 25 4
gpt4 key购买 nike

在我的程序中,我使用 Jsoup 连接到 URL 以检索 json

这是检索json的方法[具有subject = example]:

private void result() throws IOException {
Properties props = new Properties();
props.setProperty("annotators", "tokenize,ssplit,pos,lemma,depparse,natlog,openie");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
List<String> list = newsList.getSelectedValuesList();
for (String s : list) {
Annotation doc = new Annotation(s);
pipeline.annotate(doc);
for (CoreMap sentence : doc.get(CoreAnnotations.SentencesAnnotation.class)) {
// Get the OpenIE triples for the sentence
Collection<RelationTriple> triples =
sentence.get(NaturalLogicAnnotations.RelationTriplesAnnotation.class);
// Print the triples
for (RelationTriple triple : triples) {
/* replace space with "_" */
String subject = triple.subjectLemmaGloss().replace(" ", "_");
String object = triple.objectGloss().replace(" ", "_");
String kb = "http://api.conceptnet.io/c/en/" + subject;
Document docKb = Jsoup.connect(kb).get();
String json = docKb.body().text();
Gson gson = new Gson();
Map<String, Object> asMap = gson.fromJson(json.toString(), Map.class);
List<Map<String, Object>> edges = (List) asMap.get("edges");
for (Map<String, Object> edge : edges) {
if (edge.containsKey("surfaceText") && edge.containsKey("weight")) {
txtAreaNews.append(edge.get("surfaceText").toString() + "\n");
txtAreaNews.append("Weight: " + edge.get("weight").toString());
}
txtAreaNews.append("\n");
}
}
}
}
}

这是我从 txtAreaNews.append(docKb.text()); 的 URL 检索到的 html:

 ConceptNet 5 API {
"@context": [
"http://api.conceptnet.io/ld/conceptnet5.5/context.ld.json",
"http://api.conceptnet.io/ld/conceptnet5.5/pagination.ld.json"
],
"@id": "/c/en/example",
"edges": [
{
"@id": "/a/[/r/IsA/,/c/en/apology/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/apology/n",
"label": "apology",
"language": "en",
"sense_label": "n",
"term": "/c/en/apology"
},
"surfaceText": "[[apology]] is a type of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/IsA/,/c/en/example/n/,/c/en/admonition/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/admonition/n",
"label": "admonition",
"language": "en",
"sense_label": "n",
"term": "/c/en/admonition"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"surfaceText": "[[example]] is a type of [[admonition]]",
"weight": 2.0
},
{
"@id": "/a/[/r/IsA/,/c/en/example/n/,/c/en/information/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/information/n",
"label": "information",
"language": "en",
"sense_label": "n",
"term": "/c/en/information"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"surfaceText": "[[example]] is a type of [[information]]",
"weight": 2.0
},
{
"@id": "/a/[/r/IsA/,/c/en/exception/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/exception/n",
"label": "exception",
"language": "en",
"sense_label": "n",
"term": "/c/en/exception"
},
"surfaceText": "[[exception]] is a type of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/IsA/,/c/en/precedent/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/precedent/n",
"label": "precedent",
"language": "en",
"sense_label": "n",
"term": "/c/en/precedent"
},
"surfaceText": "[[precedent]] is a type of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/IsA/,/c/en/quintessence/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/quintessence/n",
"label": "quintessence",
"language": "en",
"sense_label": "n",
"term": "/c/en/quintessence"
},
"surfaceText": "[[quintessence]] is a type of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/IsA/,/c/en/sample/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/sample/n",
"label": "sample",
"language": "en",
"sense_label": "n",
"term": "/c/en/sample"
},
"surfaceText": "[[sample]] is a type of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/IsA/,/c/en/specimen/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/IsA",
"label": "IsA"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/specimen/n",
"label": "specimen",
"language": "en",
"sense_label": "n",
"term": "/c/en/specimen"
},
"surfaceText": "[[specimen]] is a type of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/RelatedTo/,/c/en/exemplary/a/,/c/en/example/]",
"dataset": "/d/wiktionary/en",
"end": {
"@id": "/c/en/example",
"label": "example",
"language": "en",
"term": "/c/en/example"
},
"license": "cc:by-sa/4.0",
"rel": {
"@id": "/r/RelatedTo",
"label": "RelatedTo"
},
"sources": [
{
"@id": "/and/[/s/process/wikiparsec/1/,/s/resource/wiktionary/en/]",
"contributor": "/s/resource/wiktionary/en",
"process": "/s/process/wikiparsec/1"
},
{
"@id": "/and/[/s/process/wikiparsec/1/,/s/resource/wiktionary/fr/]",
"contributor": "/s/resource/wiktionary/fr",
"process": "/s/process/wikiparsec/1"
}
],
"start": {
"@id": "/c/en/exemplary/a",
"label": "exemplary",
"language": "en",
"sense_label": "a",
"term": "/c/en/exemplary"
},
"surfaceText": null,
"weight": 2.0
},
{
"@id": "/a/[/r/RelatedTo/,/c/en/exemplify/v/,/c/en/example/]",
"dataset": "/d/wiktionary/en",
"end": {
"@id": "/c/en/example",
"label": "example",
"language": "en",
"term": "/c/en/example"
},
"license": "cc:by-sa/4.0",
"rel": {
"@id": "/r/RelatedTo",
"label": "RelatedTo"
},
"sources": [
{
"@id": "/and/[/s/process/wikiparsec/1/,/s/resource/wiktionary/en/]",
"contributor": "/s/resource/wiktionary/en",
"process": "/s/process/wikiparsec/1"
},
{
"@id": "/and/[/s/process/wikiparsec/1/,/s/resource/wiktionary/fr/]",
"contributor": "/s/resource/wiktionary/fr",
"process": "/s/process/wikiparsec/1"
}
],
"start": {
"@id": "/c/en/exemplify/v",
"label": "exemplify",
"language": "en",
"sense_label": "v",
"term": "/c/en/exemplify"
},
"surfaceText": null,
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/ar/مِثَال/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/ar/مِثَال/n",
"label": "مِثَال",
"language": "ar",
"sense_label": "n",
"term": "/c/ar/مِثَال"
},
"surfaceText": "[[مِثَال]] is a translation of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/ar/مَثَل/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/ar/مَثَل/n",
"label": "مَثَل",
"language": "ar",
"sense_label": "n",
"term": "/c/ar/مَثَل"
},
"surfaceText": "[[مَثَل]] is a translation of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/ca/escarment/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/ca/escarment/n",
"label": "escarment",
"language": "ca",
"sense_label": "n",
"term": "/c/ca/escarment"
},
"surfaceText": "[[escarment]] is a translation of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/ca/exemple/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/ca/exemple/n",
"label": "exemple",
"language": "ca",
"sense_label": "n",
"term": "/c/ca/exemple"
},
"surfaceText": "[[exemple]] is a translation of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/ca/lliçó/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/ca/lliçó/n",
"label": "lliçó",
"language": "ca",
"sense_label": "n",
"term": "/c/ca/lliçó"
},
"surfaceText": "[[lliçó]] is a translation of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/da/eksempel/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/da/eksempel/n",
"label": "eksempel",
"language": "da",
"sense_label": "n",
"term": "/c/da/eksempel"
},
"surfaceText": "[[eksempel]] is a translation of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/en/deterrent_example/n/,/c/en/example/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/deterrent_example/n",
"label": "deterrent example",
"language": "en",
"sense_label": "n",
"term": "/c/en/deterrent_example"
},
"surfaceText": "[[deterrent example]] is a synonym of [[example]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/en/example/n/,/c/en/case/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/case/n",
"label": "case",
"language": "en",
"sense_label": "n",
"term": "/c/en/case"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"surfaceText": "[[example]] is a synonym of [[case]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/en/example/n/,/c/en/exemplar/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/exemplar/n",
"label": "exemplar",
"language": "en",
"sense_label": "n",
"term": "/c/en/exemplar"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"surfaceText": "[[example]] is a synonym of [[exemplar]]",
"weight": 2.0
},
{
"@id": "/a/[/r/Synonym/,/c/en/example/n/,/c/en/exercise/n/]",
"dataset": "/d/wordnet/3.1",
"end": {
"@id": "/c/en/exercise/n",
"label": "exercise",
"language": "en",
"sense_label": "n",
"term": "/c/en/exercise"
},
"license": "cc:by/4.0",
"rel": {
"@id": "/r/Synonym",
"label": "Synonym"
},
"sources": [
{
"@id": "/s/resource/wordnet/rdf/3.1",
"contributor": "/s/resource/wordnet/rdf/3.1"
}
],
"start": {
"@id": "/c/en/example/n",
"label": "example",
"language": "en",
"sense_label": "n",
"term": "/c/en/example"
},
"surfaceText": "[[example]] is a synonym of [[exercise]]",
"weight": 2.0
}
],
"view": {
"@id": "/c/en/example?offset=0&limit=20",
"firstPage": "/c/en/example?offset=0&limit=20",
"nextPage": "/c/en/example?offset=20&limit=20",
"paginatedProperty": "edges"
}
}

为 null 的 surfaceText 示例:

{
"@id": "/a/[/r/RelatedTo/,/c/en/exemplary/a/,/c/en/example/]",
"dataset": "/d/wiktionary/en",
"end": {
"@id": "/c/en/example",
"label": "example",
"language": "en",
"term": "/c/en/example"
},
"license": "cc:by-sa/4.0",
"rel": {
"@id": "/r/RelatedTo",
"label": "RelatedTo"
},
"sources": [
{
"@id": "/and/[/s/process/wikiparsec/1/,/s/resource/wiktionary/en/]",
"contributor": "/s/resource/wiktionary/en",
"process": "/s/process/wikiparsec/1"
},
{
"@id": "/and/[/s/process/wikiparsec/1/,/s/resource/wiktionary/fr/]",
"contributor": "/s/resource/wiktionary/fr",
"process": "/s/process/wikiparsec/1"
}
],
"start": {
"@id": "/c/en/exemplary/a",
"label": "exemplary",
"language": "en",
"sense_label": "a",
"term": "/c/en/exemplary"
},
"surfaceText": null,
"weight": 2.0
}

我想问一下,如何用Jsoup或Gson从上面获取的数据中获取“surfaceText”“weight”

最佳答案

您可以使用Gson将 JSON 反序列化为 Map,然后查询 Map

这是一个例子:

String kb = "http://api.conceptnet.io/c/en/example";
Document docKb = Jsoup.connect(kb).get();
String json = docKb.body().text();

Gson gson = new Gson();
Map<String, Object> asMap = gson.fromJson(json, Map.class);
List<Map<String, Object>> edges = (List) asMap.get("edges");
for (Map<String, Object> edge : edges) {
// check that the response contains a surfaceText
if (edge.containsKey("surfaceText")) {
// check that the surfaceText value is non-null
String surfaceText = (String) edge.get("surfaceText");
if (surfaceText != null) {
System.out.println(edge.get("surfaceText"));
}
}
if (edge.containsKey("weight")) {
System.out.println(edge.get("weight"));
}
}

此代码将打印出:

[[apology]] is a type of [[example]]
2.0
[[example]] is a type of [[admonition]]
2.0
[[example]] is a type of [[information]]
2.0
[[exception]] is a type of [[example]]
2.0
... etc

关于java - 如何使用 Jsoup 和 Gson 提取 JSON 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48459992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com