我有一个 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/