mysql - 如何使用 MYSQL 数据在 perl 脚本中创建键值 JSON 响应

标签 mysql json perl

我有一个 perl 脚本,它执行一些查询并以 JSON 格式返回响应。但返回的 JSON 只是值数组。

这是 Perl 脚本

my $sql_query = "SELECT * from table_categories";
my $statement = $db_handle->prepare ($sql_query) or die "Couldn't prepare query '$sql_query': $DBI::errstr\n";  
$statement->execute() or die "SQL Error: $DBI::errstr\n";  

my @loop_data = ();

while (my @data = $statement->fetchrow_array())
{
    push(@loop_data, @data);
}   

my $json;
$json->{"entries"} = \@loop_data;

my $json_text = to_json($json);
print $json_text;

响应是这样的

{
    "entries": [
        [
            "1",
            "Salt and Sugar",
            "/images/salt_sugar.png",
            "7"
        ],
        [
            "2",
            "Tea and Coffee",
            "/images/tea_and_coffee.png",
            "6"
        ],
        [
            "3",
            "Spice and Pickles",
            "/images/categories/spice_pickles.png",
            "7"
        ],
        [
            "4",
            "Pooja Needs",
            "/images/categories/pooja-needs.png",
            "9"
        ],
        [
            "5",
            "Dry Fruits",
            "/images/categories/dry_fruits.png",
            "7"
        ]
    ]
}

但我想要这样的回应:

{
"entries": [
    [
        "id": "1",
        "name": "Salt and Sugar",
        "image": "/images/salt_sugar.png",
        "rank": "7"
    ],
    [
        "id": "2",
        "name": "Tea and Coffee",
        "image": "/images/tea_and_coffee.png",
        "rank": "6"
    ]
]
}

如何实现? 我需要在 PERL 脚本中做哪些更改? 请帮忙。

最佳答案

如果您不需要遍历每一行,我更愿意使用带切片的 selectall_arrayref:

my $json;
my $sql_query = "SELECT * FROM table_categories";
$json->{entries} = $db_handle->selectall_arrayref( $sql_query, {Slice => {} } );

my $json_text = to_json($json);
print $json_text;

因此您也可以获得 key 并且代码更加紧凑和清晰。

关于mysql - 如何使用 MYSQL 数据在 perl 脚本中创建键值 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29179454/

相关文章:

mysql - 如何更新 phpMyAdmin 中的 View ?

java - 检查 JSON 字符串中是否存在多个键 - Java

java - JAVA免root解析JSON

regex - Perl 正则表达式多重匹配

perl - 将系统命令的输出捕获到文本文件的最佳方法?

MySQL 存储过程 - 如何在 FROM 子句中使用参数

mysql - 具有连接子查询的列范围

java - 在准备好的语句中搜索字符串

javascript - SyntaxError : JSON. 解析:意外的数据结束

linux - ftp 下载完成,但解压提示不正确