首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改JSON输出

更改JSON输出
EN

Stack Overflow用户
提问于 2012-10-19 22:07:51
回答 5查看 113关注 0票数 1

我使用以下代码从我的表中获取内容。但我需要稍微更改一下JSON的输出。

代码语言:javascript
复制
$rows = array();
if(isset($_GET['fruitName'])) {
$stmt = $pdo->prepare("SELECT variety FROM fruit WHERE name = ? ORDER BY variety");
$stmt->execute(array($_GET['fruitName']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($rows);

使用上面的代码,它如下所示:

代码语言:javascript
复制
[{"variety":"Apple"},{"variety":"Banana"},{"variety":"Orange"},{"variety":"Pear"}]

但我希望它是这样的:

代码语言:javascript
复制
[{"optionValue": "Apple", "optionDisplay": "Apple"}, {"optionValue": "Banana", "optionDisplay": "Banana"}, {"optionValue": "Orange", "optionDisplay": "Orange"}, {"optionValue": "Pear", "optionDisplay": "Pear"}]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-19 22:18:39

一种解决方案是调整SQL查询,如下所示:

代码语言:javascript
复制
SELECT variety AS optionValue, variety AS optionDisplay FROM fruit WHERE name = ? ORDER BY variety

另一种方法是分别解析每一行,然后手动构建数组。因此,不是

代码语言:javascript
复制
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

你可以使用

代码语言:javascript
复制
$rows = array();
while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
  $rows[] = array( 'optionValue' => $row['variety'], 'optionDisplay' => $row['variety'] );
}
票数 2
EN

Stack Overflow用户

发布于 2012-10-19 22:16:09

将select语句更改为

代码语言:javascript
复制
"SELECT variety as `optionValue`,variety as `optionDisplay` FROM fruit WHERE name = ? ORDER BY variety"
票数 0
EN

Stack Overflow用户

发布于 2012-10-19 22:16:24

代码语言:javascript
复制
$data = '[{"variety":"Apple"},{"variety":"Banana"},{"variety":"Orange"},{"variety":"Pear"}]';

$arr = new array();
// loop through the data
foreach($data as $k => $v){
  // build an array of values formatted as you want
  $arr[] = '{"optionValue": "'.$v.'", "optionDisplay": "'.$v.'"}}';
}
// join all the values togetger, and pass through json parser
$obj = json_decode(',', "[" . implode($arr) . "]");
// should return in your desired format...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12976030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档