Javascript 为什么我会得到这个错误;解析JSON字符串时出现意外的字符串结尾“;当解码URI编码的JSON字符串时?
我试图将一些JSON数据发布到我的Perl脚本中,但JSON模块似乎无法处理此字符串:Javascript 为什么我会得到这个错误;解析JSON字符串时出现意外的字符串结尾“;当解码URI编码的JSON字符串时?,javascript,json,perl,post,Javascript,Json,Perl,Post,我试图将一些JSON数据发布到我的Perl脚本中,但JSON模块似乎无法处理此字符串: [{”“:”#“,“jednostka:”,“login:“SA”}] 我在JavaScript中使用了encodeURIComponent(),因此我的字符串实际上如下所示: {"widget": { "debug": "on", "window": { "title": "Sample Konfabulator Widget", "name": "main
[{”“:”#“,“jednostka:”,“login:“SA”}]
我在JavaScript中使用了encodeURIComponent()
,因此我的字符串实际上如下所示:
{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500,
} }}
[{%22%22:%22#%22,%22jednostka%22:%22%22,%22login%22:%22SA%22}]
错误日志:
在C:\草莓\perl\lib/JSON/PP.pm第837行调用的JSON::PP::decode_错误(“解析JSON字符串时字符串意外结束”)
|JSON::PP::string()在C:\草莓\perl\lib/JSON/PP.pm第960行调用
|在C:\草莓\perl\lib/JSON/PP.pm第724行调用JSON::PP::object()
|JSON::PP::value()在C:\草莓\perl\lib/JSON/PP.pm行907处调用
|在C:\草莓\perl\lib/JSON/PP.pm第725行调用JSON::PP::array()
|在C:\草莓\perl\lib/JSON/PP.pm第688行调用JSON::PP::value()
|JSON::PP::PP_decode_JSON('JSON::PP=HASH(0xd0c2534)',[{%22%22:%22#%22,%22jednostka%22:%22%22,%22login%22:%22SA%22}]',0)在C:\草莓\perl\lib/JSON/PP.pm第148行调用
看起来您正在用Perl对其进行解码,但试图解码一个空变量名。给第一个变量起一个名字。您是否意识到您只需要为GET请求转义数据?这就是为什么该函数被称为encodeURIComponent
,因为生成的字符串用于URL中。在POST请求中,数据在消息体中传递,而不是在URL中传递
我看到您正在使用这个模块,它可以很好地处理您显示的简单JSON字符串。下面是一个示例程序,它显示了使用data::Dump
根据错误日志,您正在对JSON数据进行编码,而您不应该这样做。如果我用encodeURIComponent
替换下面的JSON数据,则会收到错误消息
分析JSON字符串时,在字符偏移量3处出现意外的字符串结尾(在“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;
输出
从Perl的JSON::decode_JSON()函数中获取“解析JSON字符串时字符串意外结束”的另一种方法是,如果JSON文件包含以下内容:
{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500,
} }}
不允许尾随逗号(顺便说一句,这与URI编码无关)。您应该能够使用JSON::Parse::。捕获此类JSON格式冲突。您如何解析JSON?您是否尝试过JSON.parse(“[{”“:“#”,“jednostka:”“login:”“SA”}]”)?我不确定您为什么需要encodeURIComponent()。没有它不工作吗?你不应该在另一边解码吗?你需要在编码更改“到%22”后提供一个Someone函数,这是个问题。我需要将value=“value”更改为value=“value”。在html中将“结束无更改”更改为%22。其他选项是替换“到&qout;