UnparseableJsonResponse 对于一个特定的有效 JSON
UnparseableJsonResponse for one specific, valid JSON
我有一个标准的 Dialogflow 代理,使用 javascript/node.js webhooks。在大多数情况下它工作得很好。我最近遇到了一个让我完全不知所措的问题。我目前正在 conv.data
中保存一些 JSON-对象,以尽量减少我的 webhook 必须进行的外部 API-调用。对于一个特定的 JSON-object,使用 node-fetch 从外部 API 获取,我从我这边发送的响应看起来非常普通。我使用 firebase 并且 firebase 日志不显示任何错误消息或任何可能存在问题的迹象。但是我在 Google 操作控制台中收到此错误:
UnparseableJsonResponse API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: "Parsing terminated before end of input. 8,\"3\":12},\"w ^".
并且在 stackdriver 日志中,收到的响应不是以通常的开头
Received response from agent with body: HTTP/1.1 200 OK Server: ... etc
相反,它从外部 API-JSON-文件
的中间开始
Received response from agent with body: 8,\"3\":12},\"winPercentage\":1392}}}}, ... etc
代理从外部 API 获取 JSON 后第一次响应时不会发生这种情况。代理在获取 JSON 后第二次响应时,无论第二次调用是否使用来自 JSON 的信息,一切都会崩溃,而不管任何事情 except 如果 JSON 文件在第一次和第二次调用之间被覆盖。如果文件被覆盖,程序运行完美。所以问题可能是存储 and/or 解析这个特定 JSON 文件的一部分。不幸的是,我在此应用程序中使用的 API 不是 public,并且由于保密协议,我无法授予对 JSON 的任何访问权限,所以我知道您可能无法提供帮助我。不过,我会尽可能多地提供有关 JSON 的信息,并希望一切顺利:
- 根据https://codebeautify.org/jsonvalidator和jsonlint.com
有效
- 它的结构与来自同一 API 的其他 JSON 文件完全相同,不会使应用程序崩溃
- 它比同一 API 中的其他 JSON 个文件稍大。它有大约 340 000 个字符,其他大约有 280-300 000 个字符。
- 所有 JSONs,以及那些有效的,都来自一家瑞典公司,因此可能存在 å、ä 和 ö 等不寻常的字符。
- 错误消息总是相同的,只是响应的开头在 JSON 文件中的不同位置。 "8,\\"3\\":12}, ...", "ostPosition\":2 ...", "3804,\\"startPoints\":2960 ..." 是一些例子.
我非常感谢我可能获得的所有帮助,即使这只是我需要提出的问题,或者我下一步可能会尝试进行故障排除的地方。
我怀疑问题是您尝试保存的 JSON 大于他们为 conv.data
分配的缓冲区大小,尽管我找不到任何文档说明有一些特定的限制。
我会检查您在错误 header 中看到的字符串在 JSON 中的位置,并尽量使其保持在该限制范围内。
我有一个标准的 Dialogflow 代理,使用 javascript/node.js webhooks。在大多数情况下它工作得很好。我最近遇到了一个让我完全不知所措的问题。我目前正在 conv.data
中保存一些 JSON-对象,以尽量减少我的 webhook 必须进行的外部 API-调用。对于一个特定的 JSON-object,使用 node-fetch 从外部 API 获取,我从我这边发送的响应看起来非常普通。我使用 firebase 并且 firebase 日志不显示任何错误消息或任何可能存在问题的迹象。但是我在 Google 操作控制台中收到此错误:
UnparseableJsonResponse API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: "Parsing terminated before end of input. 8,\"3\":12},\"w ^".
并且在 stackdriver 日志中,收到的响应不是以通常的开头
Received response from agent with body: HTTP/1.1 200 OK Server: ... etc
相反,它从外部 API-JSON-文件
的中间开始Received response from agent with body: 8,\"3\":12},\"winPercentage\":1392}}}}, ... etc
代理从外部 API 获取 JSON 后第一次响应时不会发生这种情况。代理在获取 JSON 后第二次响应时,无论第二次调用是否使用来自 JSON 的信息,一切都会崩溃,而不管任何事情 except 如果 JSON 文件在第一次和第二次调用之间被覆盖。如果文件被覆盖,程序运行完美。所以问题可能是存储 and/or 解析这个特定 JSON 文件的一部分。不幸的是,我在此应用程序中使用的 API 不是 public,并且由于保密协议,我无法授予对 JSON 的任何访问权限,所以我知道您可能无法提供帮助我。不过,我会尽可能多地提供有关 JSON 的信息,并希望一切顺利:
- 根据https://codebeautify.org/jsonvalidator和jsonlint.com 有效
- 它的结构与来自同一 API 的其他 JSON 文件完全相同,不会使应用程序崩溃
- 它比同一 API 中的其他 JSON 个文件稍大。它有大约 340 000 个字符,其他大约有 280-300 000 个字符。
- 所有 JSONs,以及那些有效的,都来自一家瑞典公司,因此可能存在 å、ä 和 ö 等不寻常的字符。
- 错误消息总是相同的,只是响应的开头在 JSON 文件中的不同位置。 "8,\\"3\\":12}, ...", "ostPosition\":2 ...", "3804,\\"startPoints\":2960 ..." 是一些例子.
我非常感谢我可能获得的所有帮助,即使这只是我需要提出的问题,或者我下一步可能会尝试进行故障排除的地方。
我怀疑问题是您尝试保存的 JSON 大于他们为 conv.data
分配的缓冲区大小,尽管我找不到任何文档说明有一些特定的限制。
我会检查您在错误 header 中看到的字符串在 JSON 中的位置,并尽量使其保持在该限制范围内。