【问题标题】:incorrect JSON data - Array to Object不正确的 JSON 数据 - 数组到对象
【发布时间】:2020-05-08 10:48:59
【问题描述】:

我是 php json 对象的新手。 我正在尝试从我的数据库表数据中创建以下 json 格式。 Visits 基本上是一个对象。但是我的对象知识非常有限,所以我陷入了困境。

"visits": {
  "order_1": {
    "location": {
      "name": "6800 Cambie",
      "lat": 49.227107,
      "lng": -123.1163085
    },
    "start": "9:00",
    "end": "12:00",
    "duration": 10,
    "load": 1,
    "type": "A",
    "priority": "high"
  }
}

但我低于 json 格式。这是错误的。

{
  "visits": [
    {
      "order_1": {
        "location": {
          "name": "21 Marara Court, ALBANY CREEK QLD 4035",
          "lat": "-37.7044",
          "lng": "145.1006"
        }
      }
    },
    {
      "order_2": {
        "location": {
          "name": "Unit 7, 19 O'Connell Street, KANGAROO POINT QLD 4169",
          "lat": "-37.6389",
          "lng": "145.1950"
        }
      }
    },

  ],
  "fleet": {
    "vehicle_1": {
      "start_location": {
        "id": "depot",
        "name": "23 Moverly Rd",
        "lat": -33.9356141,
        "lng": 151.2425993
      },
      "end_location": {
        "id": "depot",
        "name": "23 Moverly Rd",
        "lat": -33.9356141,
        "lng": 151.2425993
      }
    }
  },

}

问题出在"visits": [ 数组上。但我需要反对。 所以我的php代码如下:

foreach ($orders as $value) {
  $orders2[] = array(
        "order_$i"=> array(
            "location"=> array(
                "name"=> $value['address'],
                "lat"=> $value['lat'],
                "lng"=> $value['long']
            ),
        ),
    );
}

$data = array(
    "visits" => $orders2,
    "fleet"=> array(
        "vehicle_1"=> array(
            "start_location"=> array(
                "id"=> "depot",
                "name"=> "23 Moverly Rd",
                "lat"=> -33.9356141,
                "lng"=> 151.2425993
            ),
            "end_location"=> array(
                "id"=> "depot",
                "name"=> "23 Moverly Rd",
                "lat"=> -33.9356141,
                "lng"=> 151.2425993
            ),

        )
    ),

);

如果有人能给我任何想法,那就更好了。谢谢你:)

【问题讨论】:

    标签: php arrays object routific-api


    【解决方案1】:

    要使用json_encode 获取对象,您必须使用自定义数组键。

    试试这个:

    foreach ($orders as $value) {
        $orders2["order_$i"] = array(
            "location"=> array(
                "name"=> $value['address'],
                "lat"=> $value['lat'],
                "lng"=> $value['long']
            ),
         );
    }
    

    为了完整起见:

    你也可以在json_encode中使用JSON_FORCE_OBJECT选项或者直接使用StdClass强制获取json对象。但在你的情况下,结构还是错误的,所以上面的代码应该适合你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-26
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      相关资源
      最近更新 更多