gpt4 book ai didi

perl - 如何改进此 perl/bash 单行程序以反序列化 json 数据

转载 作者:行者123 更新时间:2023-11-29 09:09:45 25 4
gpt4 key购买 nike

我有一个小的 bash 程序,它调用一个返回 JSON 数据的网络服务。

我自己写了webservice程序,我完全控制了它的数据源,因此我可以信任返回的数据。

现在我想对数据做点什么。

数据是一个简单的短键值结构,没有嵌套,看起来像这样:

{
"asciifile" : "../tmp/data_20120720_105746-01580.txt",
"excelfile" : "../tmp/data_01580-20120720_105746.xlsx",
"from" : "Jun 19, 2012",
"msg" : "some info message, for the admin",
"outfile" : "data--recent.txt",
"outfile_excel" : "data--recent.txt.xlsx",
"resolution" : "std"
"to" : "Jul 20, 2012",
"url_comment" : "another info message, for the screen/user",
"url_outfile" : "http://www.example.com/path/tmp_cached_files/data--recent.txt",
"url_outfile_excel" : "http://www.example.com/path/tmp_cached_files/data--recent.txt.xlsx",

}

现在我正在使用这个单行代码反序列化返回给 perl 代码的 json 结构。查看此代码段的最后一行:

#!/bin/bash
cmd=$(curl_or_wget_call_to_webservice)
output=$(eval $cmd)
outfile_excel=$(echo "$output"| json_xs -f json -t dumper | tee | perl -n0777 -E 'eval "%h=%{$_}"; warn $@ if $@; say $h{outfile_excel}')

例如,我不确定我为什么想出 %{$_} 结构。 有更好的方法吗?有没有更短或更安全的方法来写最后一行?

SE 编辑:如果您愿意,可以将此帖子移至 codereview stackexchange 站点,但我在那里没有帐户。

编辑:8 个月后重访该帖子,我想补充一点,这些天我使用这个衬垫来获取我的 github 存储库的名称:

 wget --quiet --auth-no-challenge --user knbknb --password secret  -O -
https://api.github.com/user/repos |
perl -MJSON -n0777 -E '$r = decode_json($_); map {say $_->{name}} @$r' -

最佳答案

Perl 可以解码 JSON 本身,所以下一个应该给出一些想法,使用 LWP::Simple 来获取一些 json 数据。

perl -MLWP::Simple -MJSON \
-e '$ref = decode_json(get("http://your.url/to/webservice")); print $ref->{outfile_excel}'

$ref 包含了所有 JSON 数据的 perl 结构,想打印就打印..

关于perl - 如何改进此 perl/bash 单行程序以反序列化 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578654/

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