gpt4 book ai didi

json - 如何删除部分 JSON Web 响应?

转载 作者:行者123 更新时间:2023-12-04 22:50:35 25 4
gpt4 key购买 nike

我有一个简单的 Perl 脚本,我想删除“城市”一词之前的所有内容。或者删除逗号“,”第 n 次出现(在我的特定情况下是第 2 次)之前的所有内容。这是下面的样子。

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

my $CMD = `curl http://ip-api.com/json/8.8.8.8`;
chomp($CMD);
my $find = "^[^city]*city";

$CMD =~ s/$find//;

print $CMD;

输出是这样的:

{"as":"AS15169 Google Inc.","city":"Mountain View","country":"United States","countryCode":"US","isp":"Google","lat" :37.386,"lon":-122.0838,"org":"Google","query":"8.8.8.8","region":"CA","regionName":"California","status":"success","timezone":"America/Los_Angeles","zip":"94035"}

所以我想做 drop

" {"as":"AS15169 Google Inc."," 

或下降到

{"as":"AS15169 Google Inc.","city":"Mountain View", 

编辑:

我发现我在匹配字符串时做得太多了。我通过删除“城市”之前的所有内容简化了我的问题的修复。我的 $find 已更改为

my $find = ".*city";

虽然我也像这样更改了替换功能,

$CMD =~ s/$find/city/;

仍然没有弄清楚如何删除第 n 次出现的逗号或任何字符/字符串之前的所有内容。

最佳答案

返回的内容是JSON ,因此您可以轻松地将其转换为 Perl 数据结构,使用它,如果愿意,甚至可以将其转换回 JSON。这才是重点!而且,它是如此简单:

use Mojo::UserAgent;
use Mojo::JSON qw(decode_json encode_json);

my $ua = Mojo::UserAgent->new;

my $tx = $ua->get( 'http://ip-api.com/json/8.8.8.8' );
my $json = $tx->res->body;

my $perl = decode_json( $json );

delete $perl->{'as'};

my $new_json = encode_json( $perl );

print $new_json;

Mojolicious这太棒了。这是我处理 JSON 的首选方式,即使没有用户代理的东西。如果您直接使用 JSON 字符串,当元素的顺序发生变化或它包含宽字符时,您可能会遇到问题。

关于json - 如何删除部分 JSON Web 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com