i have a json in a file sample.txt
i want to decode whole json and print key values by specifying. my per code is
#!/usr/bin/perl
use JSON;
use Data::Dumper;
use JSON::XS qw( decode_json );
open (han1, "sample.txt") or die "can not read this file ";
@array1 = <han1>;
$tst = $array1[0];
$text = decode_json $tst;
print Dumper($text);
I have a key in json name 'messages_ready' . i want to print value of 'messages_ready'..
my json is follows
[
{
"arguments": {},
"auto_delete": false,
"backing_queue_status": {
"avg_ack_egress_rate": 55.02128728993393,
"avg_ack_ingress_rate": 55.02128728993393,
"avg_egress_rate": 55.02128728993393,
"avg_ingress_rate": 109.64602476156203,
"delta": [
"delta",
0,
0,
0
],
"len": 6465,
"next_seq_id": 7847104,
"pending_acks": 4,
"persistent_count": 0,
"q1": 0,
"q2": 0,
"q3": 0,
"q4": 6465,
"ram_ack_count": 4,
"ram_msg_count": 6465,
"target_ram_count": "infinity"
},
"consumers": 4,
"durable": true,
"exclusive_consumer_tag": "",
"memory": 19373224,
"message_stats": {
"ack": 7840491,
"ack_details": {
"rate": 60.4
},
"deliver": 7840497,
"deliver_details": {
"rate": 60.4
},
"deliver_get": 7840498,
"deliver_get_details": {
"rate": 60.4
},
"get": 1,
"get_details": {
"rate": 0.0
},
"publish": 7847260,
"publish_details": {
"rate": 105.4
},
"redeliver": 3,
"redeliver_details": {
"rate": 0.0
}
},
"messages": 6469,
"messages_details": {
"rate": 74.6
},
"messages_ready": 6465,
"messages_ready_details": {
"rate": 74.6
},
"messages_unacknowledged": 4,
"messages_unacknowledged_details": {
"rate": 0.0
},
"name": "reports",
"node": "rabbit@ip-10-0-0-105",
"policy": "",
"status": "running",
"vhost": "/"
},
{
"arguments": {},
"auto_delete": false,
"backing_queue_status": {
"avg_ack_egress_rate": 0.0,
"avg_ack_ingress_rate": 0.0,
"avg_egress_rate": 0.0,
"avg_ingress_rate": 0.0,
"delta": [
"delta",
"undefined",
0,
"undefined"
],
"len": 1,
"next_seq_id": 1,
"pending_acks": 0,
"persistent_count": 0,
"q1": 0,
"q2": 0,
"q3": 0,
"q4": 1,
"ram_ack_count": 0,
"ram_msg_count": 1,
"target_ram_count": "infinity"
},
"consumers": 0,
"durable": true,
"exclusive_consumer_tag": "",
"idle_since": "2013-12-31 13:03:35",
"memory": 13760,
"message_stats": {
"publish": 1,
"publish_details": {
"rate": 0.0
}
},
"messages": 1,
"messages_details": {
"rate": 0.0
},
"messages_ready": 1,
"messages_ready_details": {
"rate": 0.0
},
"messages_unacknowledged": 0,
"messages_unacknowledged_details": {
"rate": 0.0
},
"name": "test",
"node": "rabbit@ip-10-0-0-105",
"policy": "",
"status": "running",
"vhost": "/"
}
]
How would i do this ? help me here...please
An object that decodes instances of a data type from JSON objects.
DESCRIPTION. JSON::PP is a pure perl JSON decoder/encoder, and (almost) compatible to much faster JSON::XS written by Marc Lehmann in C. JSON::PP works as a fallback module when you use JSON module without having installed JSON::XS.
If you have a JSON string, you can parse it by using the json.loads() method. The result will be a Python dictionary.
decode_json()
returns a reference to an array or hash depending on the data. In this case it's a reference to an array of hash references
foreach loop
uses @$json_data
to access the array elements in $json_data
, assigning each in turn to $section
. $section
is now a hash reference.$section->{some-key}
to access the keys, as in $section->{'messages_ready'}
use strict
Something like this:
#!/usr/bin/perl
use strict;
use JSON;
open (han1, "sample.txt") or die "can not read this file: $!\n";
my $json_string = join '', <han1>;
my $json_data = decode_json $json_string;
foreach my $section (@$json_data) {
print "messages_ready: " . $section->{'messages_ready'} . "\n";
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With