[英]Can't extract JSON from API response - Google Cloud Vision API (Node.js library)
这可能是一个简单的 JSON 问题,但我正在努力使用 Node.js 上的 Google Vision API 从文本检测响应中提取数据
我得到的响应对我来说看起来像 JSON 数据(这里是作为字符串的原始响应示例):
[{webDetection: null, logoAnnotations: [], context: null, safeSearchAnnotation: null,
fullTextAnnotation: {pages: [{blocks: [{blockType: TEXT, paragraphs: [{words: [{symbols:
[{boundingBox: {normalizedVertices: [], vertices: [{x: 568, y: 0}, {x: 601, y: 1}, {x:
600, y: 84}, {x: 567, y: 83}]}, property: {detectedBreak: null, detectedLanguages:
[{languageCode: en, confidence: 0}]}, confidence: 0.9900000095367432, text: B},
{boundingBox: {normalizedVertices: [], vertices: [{x: 615, y: 0}, {x: 640, y: 0}, {x: 639,
y: 83}, {x: 614, y: 83}]}, property: {detectedBreak: null, detectedLanguages:
[{languageCode: en, confidence: 0}]}, confidence: 1, text: a}, {boundingBox:
{normalized...
但是,当我尝试按如下方式解析它时,出现错误。
const jsonData = response[0].fullTextAnnotation;
const textAnnotation = JSON.parse(jsonData);
错误:SyntaxError:JSON 中位置 1 的意外标记 o
任何想法我做错了什么以及如何正确提取数据?
更新
我试过将数据作为数组和映射读取,这些数据不适用于常规 for 循环,但是如果我使用 int 循环,例如
不起作用:
const fullTextAnnotation = response[0].fullTextAnnotation;
const pages = fullTextAnnotation.pages;
const allBlocks = [];
for (var page in pages) {
const blocks = page.blocks;
for (var block in blocks) {
allBlocks.push(block);
}
}
是否有效:
const fullTextAnnotation = response[0].fullTextAnnotation;
const pages = fullTextAnnotation.pages;
const allBlocks = [];
for (var i = 0; i<pages.length;i++) {
const blocks = pages[i].blocks;
for (var j = 0; j<blocks.length;j++) {
allBlocks.push(blocks[j]);
}
}
当我使用常规 for 循环时,出现错误:“字符串”类型上不存在属性“块”。
当我使用 int 循环时,blocks 属性正确显示为: const blocks: vision.protos.google.cloud.vision.v1.IBlock[]
我猜这是我可以处理的事情,但是我绝对很好奇出了什么问题,因为找到解决方法需要很多猜测。
如果没有完整的字符串和前面的代码,很难判断,但看起来您可能在解析字符串之前获取了 fullTextAnnotation。 我建议尝试解析响应或响应 [0],然后将 fullTextAnnotation 分配给 textAnnotation 变量。
如果您可以共享响应的 console.log()、响应 [0]、相应的 JSON.parses(),然后可能是未解析的响应 [0].fullTextAnnotation,那肯定会帮助我们诊断问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.