Ich habe eine riesige JSON-Datei ~ 1000 + Zeilen. Ich wollte zwei Dinge umsetzen.JSON Parsing mit Perl
1) In der JSON-Datei, wenn "Id" : "232799"
dann zuweisen "s"
als "1861"
ich dies mit decode_json tat. Es funktioniert wie erwartet.
2) Erhöhen Sie die Nummer version
um 1 und speichern Sie die Datei in einem bestimmten Verzeichnis. Ich möchte, dass dies in einer Schleife geschieht.
Ich glaube, decode_json sollte verwendet werden, um JSON-Objekt/JSON-Array zu analysieren. Allerdings ist Version die erste Zeile in der Datei.Ich bin nicht wirklich sicher, ob decode verwendet werden könnte.Any Vorschläge?
{
"version": "16300173",
"con": {
"s1": {
"key": false,
"global": {
"cu": [
{
"Id": "232799",
"s": 1861,
"Sps": "xx",
"cId": "xyzzde",
"pat": "-123456789",
"Config": true,
"auth": [
{
"Type": "5",
"dir": "in"
},
{
"Type": "6",
"dir": "out"
}
],
Skript:
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
my $json;
{
open my $fh, "<", "https://stackoverflow.com/a/etc/cm/nw/st/cfg.json"
or die("Can't open file \"https://stackoverflow.com/a/etc/cm/nw/st/cfg.json\": $!\n");
local $/;
$json = <$fh>;
}
my $data = decode_json($json);
for my $customers (@{ $data->{global}{cu} }) {
$customers->{s} = 1861
if $customers->{id} ==237299;
}
$json = JSON->new->utf8->pretty->encode($data);
{
open my $fh, ">" ,"https://stackoverflow.com/a/etc/cm/nw/st/cfg.json"
or die("Can't open file \"https://stackoverflow.com/a/etc/cm/nw/st/cfg.json\": $!\n");
local $/;
print $fh $json;
}
'$ Daten- scheint zu funktionieren> {global} {cu} 'sollte' $ data -> {con} {s1} {global} {cu} 'sein, und Version ist nur' $ data -> {versio n} '. – choroba
@choroba können Sie mir bitte sagen, wie Sie die Versionsnummer erhöhen? – virat
'$ data -> {version} ++;' sollte es tun. – choroba