格式错误的JSON字符串

时间:2014-03-18 16:45:48

标签: xml json perl

我是从一个xml文件调用的,我基本上只是试图将数据从xml文件中导入json,这就是我所拥有的

my $url ="someURL"
my $req = HTTP::Request->new(GET => $url);
$req->content_type('application/json');
my $json = new JSON;
my $request_json = $json->allow_blessed->encode($req);
$req->content($request_json);
my $lwp       = LWP::UserAgent->new;
my $response  = $lwp->request($req);
my $response_json = $response->content;
my $parsed    = $json->allow_nonref->utf8->relaxed->decode($response_json);

最后一行给出以下回复:

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<mytag...")

2 个答案:

答案 0 :(得分:1)

查看代码的这些行

my $req = HTTP::Request->new(GET => $url);
$req->content_type('application/json');

没关系。您创建了一个HTTP::Request对象,该请求对该URL发出GET请求,并且您已在该请求中设置了一个标题,其中内容将是JSON数据。现在所需的只是添加JSON数据。

现在这是非常奇数

my $json = new JSON;
my $request_json = $json->allow_blessed->encode($req);
$req->content($request_json);

您已将整个HTTP::Request对象编码为JSON,并将其设置为对象的内容。

我希望你能看到它不应该按照它的方式工作吗? HTTP请求不会发送自身的副本作为数据内容。

添加的内容作为我无法说明的内容,因为它是您发送请求的网站的属性。通常,它是您要创建的查询的描述,在此实例中表示为JSON字符串。

如果这对您没有足够的帮助,那么您必须告诉我们有关您尝试查询的网站的更多信息。

答案 1 :(得分:0)

  

我基本上只是想把数据从xml文件中导入json

JSON通常是由数组,散列,字符串和数字组成的数据结构。一旦你有了这个,你需要做的就是

my $json = encode_json($data);

因此您需要构建正确的数据结构。既然你没有告诉我们那是什么,我认为你还没有决定它到底是什么。这是你必须做的第一件事。