php - 将perl关联数组转换为JSON并在PHP中读取

标签 php perl

我正在尝试读取 PHP 脚本中的 perl 关联数组。为此,我首先尝试使用 JSON 模块将 perl hash 转换为 JSON。

下面是我用来将关联数组转换为 JSON 的 perl 脚本。文件 toc.pl 具有关联数组“asc_array”。

use JSON;
$j = new JSON;

require'toc.pl';

print encode_json \%asc_array; 

asc_array 看起来像

%asc_array  = (
    "1"            => 'Introduction',
    "1.1"          => 'Scope',
    "1.2"          => 'Purpose',
    "2"            => 'Terminology',
    "2.1"          => 'Definitions',
    "2.2"          => 'Service Primitives',
    "2.3"          => 'Abbreviations',
    "2.4"          => 'Acronyms',
);

这里我面临一个问题,那就是在将其转换为 JSON 后,关联数组元素的顺序发生了变化。

所以我的问题是即使在将其转换为 JSON 后如何保持元素的顺序?

并且,将其转换为 JSON 后,我正在 PHP 脚本中读取 JSON。

有没有更好的方法来读取 PHP 脚本中的 perl 关联数组?

最佳答案

使用JSON->canonical对键进行排序

use JSON;

my %asc_array = (
    "1"   => 'Introduction',
    "1.1" => 'Scope',
    "1.2" => 'Purpose',
    "2"   => 'Terminology',
    "2.1" => 'Definitions',
    "2.2" => 'Service Primitives',
    "2.3" => 'Abbreviations',
    "2.4" => 'Acronyms',
);

print JSON->new->canonical(1)->encode( \%asc_array ), "\n";

输出:

{"1":"Introduction","1.1":"Scope","1.2":"Purpose","2":"Terminology","2.1":"Definitions","2.2":"Service Primitives","2.3":"Abbreviations","2.4":"Acronyms"}

关于php - 将perl关联数组转换为JSON并在PHP中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25910702/

相关文章:

php - 正则表达式的正则表达式?

php - 登录 phpMyAdmin 时出现错误 2002

multithreading - 将 IO::Async 与矢量化 STDIN 一起使用

perl - 在 Perl 中获取堆栈跟踪?

php - 协调具有动态行和列的表的问题

php - 如何使用 php 在 Joomla 数据库中设置限制?

perl - readdir() 是否以任何特定顺序返回其结果?

perl - 哪些 Perl 模块适合编写 RESTful Web API 客户端?

Perl 脚本中的 Perl 内联替换

javascript - 客户端服务器从自己的域返回 json 时没有 'Access-Control-Allow-Origin'