我是从一个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...")
答案 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);
因此您需要构建正确的数据结构。既然你没有告诉我们那是什么,我认为你还没有决定它到底是什么。这是你必须做的第一件事。