【问题标题】:Perl: Json Parsing from URL every time getting one value inside arrayPerl:每次在数组中获取一个值时从 URL 解析 Json
【发布时间】:2020-10-19 10:23:04
【问题描述】:

JSON 响应: 下面是我要从 url 解析的 json 响应。

[
    {
        "StationID": 17682,
        "TVEStationID": 0,
        "CallLetters": "DIYHD",
        "StationName": "DIYHD",
        "Affiliation": "Do-It-Yourself Network HD",
    },
    {
        "StationID": 17683,
        "TVEStationID": 0,
        "CallLetters": "WGNA",
        "StationName": "WGNA",
        "Affiliation": "WGN America HD",
    }
]

Perl 代码:

my $response = $ua->get('https://myurl here......');

if ($response->is_success) {
    print $response->decoded_content;
}

我必须解析上面的 json 并将其存储到所有五个值的变量中,我是 perl 的新手,无法找到解决方案,请帮我解析。

在这里,我得到了成功响应,但在响应中我必须如何解析和获取值...从我无法做到的数组中。

谢谢

【问题讨论】:

  • 您在$response 上调用的get() 函数是什么?你得到什么输出?你到底在纠结什么?
  • 我的回复来了,现在我已经编辑了我的问题。作为回应,我得到了我的 json 响应,现在我必须如何解析,请帮助我。 @simbabque
  • @PriityKumari:所以在这里my $response = $ua->get('https://myurl here......'); 你得到了 JSON 响应,你需要存储什么?解析成什么格式?我们能否从您收到的回复中知道您的输出应该是什么样子?
  • 我必须将所有值存储到变量插入表中,我无法刺激 for 循环并且无法获取值,请帮助我@vkk05
  • @PriityKumari:查看 Dave 的 answer 并打印 Dumper 以获得 $data。您将收到来自$ua->get(..) 中提到的 URL 的响应,格式非常好。从那里您可以继续如何将其插入表中。如果从$data 解析变得困难,您可以打开单独的线程。

标签: json perl


【解决方案1】:

使用库,我的首选是 Cpanel::JSON::XS,但另请参阅 JSON::MaybeXSJSON::XSJSON::PP

#! /usr/bin/perl
use strict;
use warnings;

...
use Cpanel::JSON::XS;

my $response = $ua->get('https://myurl here......');
if ($response->is_success) {
    my $structure = decode_json($response->decoded_content);
    print $structure->[1]{StationID};  # 17683
}

请注意,我必须从 JSON 中删除尾随逗号。

【讨论】:

  • 嗨@choroba 我必须从 URL 解析,请帮助我。
  • 尝试在代码中的 $json 变量上调用 decode_json
  • if ($response->is_success) { 我的 $structure1 = decode_json($response);打印 $structure1->[1]{StationID};我正在使用上面的代码,请检查一次。
  • 但我必须解析fom API json响应,而不仅仅是json
  • 我不明白。请提供更多详细信息。
【解决方案2】:

你想要这样的东西:

use JSON;

my $response = $ua->get('https://myurl here......');

if ($response->is_success) {
  my $json = $response->decoded_content;

  my $data = JSON->new->decode($json);

  # $data now contains an array reference which contains
  # all of your data.
}

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2012-09-07
    • 1970-01-01
    • 2014-10-15
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多