如何解决如何从 Perl 数据结构中获取数据
我已将 JSON 解析为以下数据结构:
$VAR1 = {
'041012020' => {
'item_number' => 'P2345'
},'041012021' => {
'item_number' => 'I0965'
},'041012022' => {
'item_number' => 'R2204'
}
};
我正在尝试使用以下代码获取 item_numbers 的值,它为我提供了 HASH 值作为输出,而不是实际的 item_number 值。请指导我获得预期值。
foreach my $value (values %{$json_obj}) {
say "Value is: $value,";
}
输出:
Value is: HASH(0x557ce4e2f3c0),Value is: HASH(0x557ce4e4de18),Value is: HASH(0x557ce4e4dcf8),
foreach my $key (keys %{$json_obj}) {
say "Key is: $key,";
}
输出:
Key is: 041012020,Key is: 041012020,Key is: 041012022,
解决方法
散列元素的值是对散列 (for my $value (values %$data) {
say $value->{item_number};
}
) 的引用。这就是对引用进行字符串化时得到的结果。如果你想要项目编号,你需要告诉 Perl。
for my $item_number ( map { $_->{item_number} } values %$data ) {
say $item_number;
}
或
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>
<title>Document</title>
<style>
* {
box-sizing: border-box;
}
.container {
max-width: 520px;
max-height: 180px;
background-color: antiquewhite;
}
fieldset {
max-width: 518px;
max-height: 178px;
padding-right: 15px;
padding-left: 15px;
}
.form-group {
margin-bottom: 1rem;
background-color:#efeeef;
}
.btn{
font-weight:600;
color:#fff;
text-align:center;
vertical-align:middle;
border:1px solid transparent;
font-size:1.2rem;
line-height:1.5;
}
.btn-primary {
color: #fff;
background-color: #1172f4;
border-color: #000000;
}
.btn-primary:hover {
color: #fff;
background-color:#1172f4;
border-color: black;
}
.btn-primary:focus,.btn-primary.focus {
color: #fff;
background-color:#1172f4;
border-color: #1875f6;
box-shadow:none;
}
.btn-primary:active:focus {
box-shadow:none;
}
.form-group{
box-shadow:none;
}
.form-control{
border:2px solid #e2e2e2;
display:block;
width:100%;
padding:.375rem;
font-size:1rem;
font-weight:1rem;
line-height: 1.5;
color:#e5e5e5;
background-color: #efefef;
[![appearance:none][2]][2];
border-radius:.25rem;
outline:0;
}
.form-control:focus{
box-shadow:none;
background-color:#efefef;
outline:0;
}
.form-control:active{
background-color:#efefef;
box-shadow:none;
outline:0;
}
.form-control:active:focus{
box-shadow:none;
}
.form-email{
margin-left:10px;
margin-right:10px;
padding-right:10px;
width:95%;
border:none;
font-weight:500;
}
.form-group{
border:1.5px solid #e3e3e3;
border-radius:4px;
outline: 2px #e3e3e3;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-sm-6 col-sm-offset-3 form-box">
<form role="form" action method="post" class="registration-form" style="width:482px;height:175px;background-color:aqua;margin-left:5px;margin-right:5px;padding-left: 20px;padding-right: 20px;">
<fieldset>
<!--Start 2nd form field set-->
<div class="form-bottom">
<div class="form-group" style="margin-top:20px;width:100%;">
<input type="text" name="form-email" placeholder="Enter Your email address" class="form-email form-control" id="form-email">
</div>
<!--End of 2nd form groupdiv-->
<button type="button" class="btn btn-primary btn-next" style="margin-top:20px;margin-bottom:20px;padding-right:15px;width:100%;">Get Started</button>
</div>
<!--End of bottom div-->
</fieldset>
<!--End of second form fieldset-->
</form>
</body>
</html>
,
这是您问题的简短代码。
#!usr/bin/perl $VAR1 = { '041012020' => { 'item_number' => 'P2345' },'041012021' => { 'item_number' => 'I0965' },'041012022' => { 'item_number' => 'R2204' } }; print "$VAR1->{$_}->{item_number}\n" for keys %$VAR1;
在块中使用:
for my $key (keys %$VAR1) {
print "$VAR1->{$key}->{item_number}\n"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。