如何手动控制json_encode?

亚历山大·鲁塞尔

我有一些数据要显示在地图上。为此,我必须将其放入这样的 JSON 文件中(因为 google map):

{
"id": 1,
"picture": "cité.jpg",
"name": "Cité",
"category": "green",
"address": "52 rue de la victoire",
"about": "Cité en 1935",
"location": {
  "latitude": "48.8757197",
  "longitude": "2.3350033000000394"
},
}

随着经纬度变成“位置” 但是今天我的php代码(

$db = mysqli_connect("localhost", "root", "", "parisdb");
    $reponse = $db->query('SELECT * FROM paristable');
    while ($donnees = $reponse->fetch_assoc()){
        $data[]= $donnees;
    }
    $encode_donnees = json_encode($data);
    echo $encode_donnees;

) 给我看这样的东西:

{"ID":"1","picture":"cit\u00e99.jpg","name":"cit\u00e9",
"about":"cit\u00e9 en 1935","adress":"52 rue de la victoire","category":"green",
"latitude":"48.8757197","longitude":"2.3350033000000394"}

有没有办法在php中做到这一点?还是我必须在 MYSQL 中执行此操作?先感谢您 :)

永记

我想谈谈如何在没有太多麻烦的情况下解决这类问题,而不是关于如何解决这个特殊情况,其他人比我做得更快,也许更好。

在这种情况下,var_export是你的朋友:

它是一个经常被忽视的函数,它输出变量的字符串表示。换句话说,它会打印您为创建作为参数传递的变量而编写的代码。

如果您获得了输出数据的样本,就像您已经拥有的那样,请导出编码以使 php 数组以您需要的格式进行解码。

如果你写一个像这样的简单脚本

<?php 

  // lets discover what php array will produce the desired output format

  $sample_of_output_format = '{
    "id": 1,
    "picture": "cité.jpg",
    "name": "Cité",
    "category": "green",
    "address": "52 rue de la victoire",
    "about": "Cité en 1935",
    "location": {
      "latitude": "48.8757197",
      "longitude": "2.3350033000000394"
    } 
  }';

var_export(json_decode($sample_of_output_format, true));
?>

并运行它,你会得到

array (
  'id' => 1,
  'picture' => 'cité.jpg',
  'name' => 'Cité',
  'category' => 'green',
  'address' => '52 rue de la victoire',
  'about' => 'Cité en 1935',
  'location' => 
  array (
    'latitude' => '48.8757197',
    'longitude' => '2.3350033000000394',
  ),
)

此时,您只需复制您在代码中获得的输出,用您的 db 字段名称替换示例数据并保留结构。

您将很容易获得一个类似于以下函数的函数,您可以在代码中使用它来解决偶然问题。

function encode_for_google_map($dbrow) {
    $result = array (
      'id' => $dbrow['id'],
      'picture' => $dbrow['picture'],
      'name' => $dbrow['name'],
      'category' => $dbrow['category'],
      'address' => $dbrow['address'],
      'about' => $dbrow['about'],
      'location' => 
      array (
        'latitude' => $dbrow['latitude'],
        'longitude' => $dbrow['longitude'],
      ),
    );
    return json_encode($result);
}

你的代码变成

$db = mysqli_connect("localhost", "root", "", "parisdb");
    $reponse = $db->query('SELECT * FROM paristable');
    while ($donnees = $reponse->fetch_assoc()){
        $data[]= $donnees;
    }
    $encode_donnees = array_map(encode_for_google_map, $data);
    echo $encode_donnees;

您甚至可以保存您编写的帮助程序脚本以供将来参考。

参考

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在控制器内部手动注入路由解析数据?

来自分类Dev

如何手动卸载Magento插件?

来自分类Dev

如何通过手动控制使用水平listView或gridView

来自分类Dev

如何手动创建Mipmap?

来自分类Dev

如何在没有控制器的情况下手动提供.cshtml文件?

来自分类Dev

如何在新建情节提要后手动添加根视图控制器箭头?

来自分类Dev

如何手动安装Zurb Foundation?

来自分类Dev

如何在angularjs中从控制器手动注入部分

来自分类Dev

如何将手动版本化的文件移动到git(版本控制)?

来自分类Dev

NHibernate如何手动添加扩展?

来自分类Dev

如何手动触发更改事件?

来自分类Dev

如何从控制器内部手动ng-hide隐藏?

来自分类Dev

如何在Camera2,Android中手动控制ISO

来自分类Dev

如何手动触发巡航控制.net构建?

来自分类Dev

如何手动触发弹簧验证?

来自分类Dev

如何手动安装自制软件

来自分类Dev

手动读取JSON值

来自分类Dev

如何手动重新渲染组件?

来自分类Dev

如何手动验证SAMLResponse签名?

来自分类Dev

Ninject with MVC-如何从控制器方法中的ninject手动获取对象?

来自分类Dev

手动创建JSON记录

来自分类Dev

如何将手动版本化的文件移动到git(版本控制)?

来自分类Dev

如何手动填充?

来自分类Dev

如何在Wordpress网站上手动控制“合拢”按钮

来自分类Dev

如何在iOS应用中手动控制动画进度?

来自分类Dev

手动 json_encode 语法错误

来自分类Dev

如何手动运行 Rails 控制器操作(“离线”)?

来自分类Dev

如何从 json 和手动添加项目?

来自分类Dev

如何手动控制数据模式解释