Для данного объекта AnalyzeSyntaxResponse
, как получить корректно отформатированную строку JSON? Есть метод .toString()
, который возвращает что-то близкое к допустимой строке JSON, но отсутствует ключевые элементы, чтобы быть действительным.
Следующий пример:
try (LanguageServiceClient language = LanguageServiceClient.create()) {
String text = "I have an angel on my shoulder but a devil in my hand.";
com.google.cloud.language.v1.Document doc = com.google.cloud.language.v1.Document.newBuilder()
.setContent(text)
.setType(Type.PLAIN_TEXT)
.build();
AnalyzeSyntaxRequest request = AnalyzeSyntaxRequest.newBuilder()
.setDocument(doc)
.setEncodingType(EncodingType.UTF16)
.build();
// analyze the syntax in the given text
AnalyzeSyntaxResponse response = language.analyzeSyntax(request);
// print the response
System.out.println(response.toString());
//System.out.println(response);
}
Печать на консоли:
sentences {
text {
content: "I have an angel on my shoulder but a devil in my hand."
}
}
tokens {
text {
content: "I"
}
part_of_speech {
tag: PRON
case: NOMINATIVE
number: SINGULAR
person: FIRST
}
dependency_edge {
head_token_index: 1
label: NSUBJ
}
lemma: "I"
}
tokens {
text {
content: "have"
begin_offset: 2
}
part_of_speech {
tag: VERB
mood: INDICATIVE
tense: PRESENT
}
dependency_edge {
head_token_index: 1
label: ROOT
}
lemma: "have"
}
tokens {
text {
content: "an"
begin_offset: 7
}
part_of_speech {
tag: DET
}
dependency_edge {
head_token_index: 3
label: DET
}
lemma: "an"
}
tokens {
text {
content: "angel"
begin_offset: 10
}
part_of_speech {
tag: NOUN
number: SINGULAR
}
dependency_edge {
head_token_index: 1
label: DOBJ
}
lemma: "angel"
}
tokens {
text {
content: "on"
begin_offset: 16
}
part_of_speech {
tag: ADP
}
dependency_edge {
head_token_index: 3
label: PREP
}
lemma: "on"
}
tokens {
text {
content: "my"
begin_offset: 19
}
part_of_speech {
tag: PRON
case: GENITIVE
number: SINGULAR
person: FIRST
}
dependency_edge {
head_token_index: 6
label: POSS
}
lemma: "my"
}
tokens {
text {
content: "shoulder"
begin_offset: 22
}
part_of_speech {
tag: NOUN
number: SINGULAR
}
dependency_edge {
head_token_index: 4
label: POBJ
}
lemma: "shoulder"
}
tokens {
text {
content: "but"
begin_offset: 31
}
part_of_speech {
tag: CONJ
}
dependency_edge {
head_token_index: 3
label: CC
}
lemma: "but"
}
tokens {
text {
content: "a"
begin_offset: 35
}
part_of_speech {
tag: DET
}
dependency_edge {
head_token_index: 9
label: DET
}
lemma: "a"
}
tokens {
text {
content: "devil"
begin_offset: 37
}
part_of_speech {
tag: NOUN
number: SINGULAR
}
dependency_edge {
head_token_index: 3
label: CONJ
}
lemma: "devil"
}
tokens {
text {
content: "in"
begin_offset: 43
}
part_of_speech {
tag: ADP
}
dependency_edge {
head_token_index: 9
label: PREP
}
lemma: "in"
}
tokens {
text {
content: "my"
begin_offset: 46
}
part_of_speech {
tag: PRON
case: GENITIVE
number: SINGULAR
person: FIRST
}
dependency_edge {
head_token_index: 12
label: POSS
}
lemma: "my"
}
tokens {
text {
content: "hand"
begin_offset: 49
}
part_of_speech {
tag: NOUN
number: SINGULAR
}
dependency_edge {
head_token_index: 10
label: POBJ
}
lemma: "hand"
}
tokens {
text {
content: "."
begin_offset: 53
}
part_of_speech {
tag: PUNCT
}
dependency_edge {
head_token_index: 1
label: P
}
lemma: "."
}
language: "en"
Насколько я могу судить, это не так допустимое JSON форматирование. Есть ли способ получить действительную строку JSON из объекта Google AnalyzeSyntaxRespone?
Ссылки:
https://cloud.google.com/natural-language/docs/analyzing-syntax
https://cloud.google.com/natural-language/docs/basics