gpt4 book ai didi

javascript - 为什么在解码 URI 编码的 JSON 字符串时会收到错误 "unexpected end of string while parsing JSON string"?

转载 作者:行者123 更新时间:2023-12-03 20:19:32 28 4
gpt4 key购买 nike

我正在尝试将一些 JSON 数据发布到我的 Perl 脚本,但 JSON 模块似乎无法处理此字符串:

[{"":"#","jednostka":"","login":"SA"}]

我用了 encodeURIComponent()在 JavaScript 中,所以我的字符串实际上是这样的:

[{%22%22:%22#%22,%22jednostka%22:%22%22,%22login%22:%22SA%22}]

错误日志:

JSON::PP::decode_error('unexpected end of string while parsing JSON string') called at C:\strawberry\perl\lib/JSON/PP.pm line 837
| JSON::PP::string() called at C:\strawberry\perl\lib/JSON/PP.pm line 960
| JSON::PP::object() called at C:\strawberry\perl\lib/JSON/PP.pm line 724
| JSON::PP::value() called at C:\strawberry\perl\lib/JSON/PP.pm line 907
| JSON::PP::array() called at C:\strawberry\perl\lib/JSON/PP.pm line 725
| JSON::PP::value() called at C:\strawberry\perl\lib/JSON/PP.pm line 688
| JSON::PP::PP_decode_json('JSON::PP=HASH(0xd0c2534)', '[{%22%22:%22#%22,%22jednostka%22:%22%22,%22login%22:%22SA%22}]', 0) called at C:\strawberry\perl\lib/JSON/PP.pm line 148

最佳答案

您是否意识到您只需要为 GET 请求转义数据?这就是函数被称为 encodeURIComponent 的原因。 ,因为生成的字符串是在 URL 中使用的。在 POST 请求中,数据在消息正文中传递,而不是在 URL 中

我看到您正在使用 JSON::PP 模块,它适用于您显示的简单 JSON 字符串。这是一个示例程序,它显示了使用 Data::Dump 转储的结果数据结构。

根据错误日志,您不应该编码 JSON 数据。如果我将下面的 JSON 数据替换为 encodeURIComponent然后我收到错误消息

unexpected end of string while parsing JSON string, at character offset 3 (before "22%22:%22#%22,%22jed...")



正如您所描述的,以及错误日志确认的内容
use strict;
use warnings 'all';

use JSON::PP;
use Data::Dump;

my $json = '[{"":"#","jednostka":"","login":"SA"}]';

my $data = JSON::PP::decode_json($json);

dd $data;

输出
[{ "" => "#", "jednostka" => "", "login" => "SA" }]

关于javascript - 为什么在解码 URI 编码的 JSON 字符串时会收到错误 "unexpected end of string while parsing JSON string"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320965/

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