| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- use strict;
- use warnings;
- use JSON;
- sub process_json_data {
- my ($tags, $file_path) = @_;
- my $filename = $file_path; # json 文件的路径
- my $json_text = do {
- open(my $json_fh, "<", $filename)
- or die("Can't open $filename: $!\n");
- local $/;
- <$json_fh>
- };
- my $json = decode_json($json_text);
- my $target = $json->{'data'};
- my @list = map { s/^\s+|\s+$//g; $_ } split( /,/, $tags );
- for my $item (@list) {
- my ($namespace, $key) = split(/:/, $item);
- for my $element (@$target) {
- # 如果$namespace与'namespace'字段相同,则进行替换
- if ($element->{'namespace'} eq $namespace) {
- my $name = $element->{'frontMatters'}->{'name'};
- $item =~ s/$namespace/$name/;
- my $data = $element->{'data'};
- # 如果在'data'字段中存在$key,则进行替换
- if (exists $data->{$key}) {
- my $value = $data->{$key}->{'name'};
- $item =~ s/$key/$value/;
- }
- last;
- }
- }
- }
-
- return @list;
- }
- my $tags = "artist:gentsuki, female:ponytail, female:schoolgirl uniform, other:no penetration";
- my $file_path = "ETagConverter/db.text.json";
- my @result = process_json_data($tags, $file_path);
- print join(", ", @result), "\n";
- # 输出 "艺术家:2"
|