Javascript 为什么我会得到这个错误;解析JSON字符串时出现意外的字符串结尾“;当解码URI编码的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

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

[{”“:”#“,“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;