如何将 json 响应字符串从 java 读取到 Document AI 的 Document 对象中?
How to read json response string into Document object of Document AI from java?
我正在与另一个 API 合作,它调用 google 文档 AI API。我正在尝试将文件中的 JSON 字符串读入 Document 对象。应该怎么做?
我尝试了以下但它不起作用。
import com.google.cloud.documentai.v1.Document;
import java.io.FileInputStream;
Document document = Document.parseFrom(new FileInputStream("src/main/resources/responseFromAPICall.json"));
System.out.println(document.getText());
我收到此错误:
Exception in thread "main" com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:129)
at com.google.protobuf.CodedInputStream$StreamDecoder.checkLastTagWas(CodedInputStream.java:2124)
at com.google.protobuf.CodedInputStream$StreamDecoder.readGroup(CodedInputStream.java:2358)
今天我也遇到了这个问题。 This answer 给了我解决方案的起点。
如果您的 json 文件是通过调用 Document AI 保存的并且看起来像:
{
"document": {
...
"text": "...",
...
},
"humanReviewStatus": {...}
}
您可以使用以下代码片段:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.google.cloud.documentai.v1.Document;
import com.google.cloud.documentai.v1.ProcessResponse;
import com.google.protobuf.util.JsonFormat;
Path filePath = Paths.get("src/main/resources/responseFromAPICall.json");
ProcessResponse.Builder responseBuilder = ProcessResponse.newBuilder();
JsonFormat.parser().merge(Files.newBufferedReader(filePath), responseBuilder);
Document document = responseBuilder.getDocument();
System.out.println(document.getText());
如果您的 json 文件仅包含“文档”对象:
{
...
"text": "...",
...
}
这段代码可以解决问题:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.google.cloud.documentai.v1.Document;
import com.google.protobuf.util.JsonFormat;
Path filePath = Paths.get("src/main/resources/responseFromAPICall.json");
Document.Builder docBuilder = Document.newBuilder();
JsonFormat.parser().merge(Files.newBufferedReader(filePath), docBuilder);
System.out.println(docBuilder.getText());
我正在与另一个 API 合作,它调用 google 文档 AI API。我正在尝试将文件中的 JSON 字符串读入 Document 对象。应该怎么做?
我尝试了以下但它不起作用。
import com.google.cloud.documentai.v1.Document;
import java.io.FileInputStream;
Document document = Document.parseFrom(new FileInputStream("src/main/resources/responseFromAPICall.json"));
System.out.println(document.getText());
我收到此错误:
Exception in thread "main" com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:129)
at com.google.protobuf.CodedInputStream$StreamDecoder.checkLastTagWas(CodedInputStream.java:2124)
at com.google.protobuf.CodedInputStream$StreamDecoder.readGroup(CodedInputStream.java:2358)
今天我也遇到了这个问题。 This answer 给了我解决方案的起点。
如果您的 json 文件是通过调用 Document AI 保存的并且看起来像:
{
"document": {
...
"text": "...",
...
},
"humanReviewStatus": {...}
}
您可以使用以下代码片段:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.google.cloud.documentai.v1.Document;
import com.google.cloud.documentai.v1.ProcessResponse;
import com.google.protobuf.util.JsonFormat;
Path filePath = Paths.get("src/main/resources/responseFromAPICall.json");
ProcessResponse.Builder responseBuilder = ProcessResponse.newBuilder();
JsonFormat.parser().merge(Files.newBufferedReader(filePath), responseBuilder);
Document document = responseBuilder.getDocument();
System.out.println(document.getText());
如果您的 json 文件仅包含“文档”对象:
{
...
"text": "...",
...
}
这段代码可以解决问题:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.google.cloud.documentai.v1.Document;
import com.google.protobuf.util.JsonFormat;
Path filePath = Paths.get("src/main/resources/responseFromAPICall.json");
Document.Builder docBuilder = Document.newBuilder();
JsonFormat.parser().merge(Files.newBufferedReader(filePath), docBuilder);
System.out.println(docBuilder.getText());