Преобразование массива JSON Google Directions v3 в массив PHP / переменных для хранения в MySQL - PullRequest
2 голосов
/ 20 февраля 2011

Я пытаюсь преобразовать объект / массив JSON из Google Directions API v3 в PHP, чтобы сохранить его в базе данных MySQL.

Массив выглядит примерно так (я довольно сильно его обрезал… извините за то, что так долго… Думаю, это также информативный вопрос для людей, желающих узнать, как выглядит строка массива из Google Directions):

{
"status":"OK",
"routes":[{
    "summary":"Lakelands Trail State Park",
    "legs":[{
        "steps":[{
            "travel_mode":"BICYCLING",
            "start_location":{"za":42.73698,"Ba":-84.4838},
            "end_location":{"za":42.74073,"Ba":-84.48378},
            "polyline":{"points":"cazcGvvsbOmVC","levels":"BB"},
            "duration":{"value":68,"text":"1 min"},
            "distance":{"value":417,"text":"0.3 mi"},
            "encoded_lat_lngs":"cazcGvvsbOmVC",
            "path":[{"za":42.73698,"Ba":-84.4838},{"za":42.740730000000006,"Ba":-84.48378000000001}],
            "lat_lngs":[{"za":42.73698,"Ba":-84.4838},{"za":42.740730000000006,"Ba":-84.48378000000001}],
            "instructions":"Head north on Abbot Rd toward Elizabeth St",
            "start_point":{"za":42.73698,"Ba":-84.4838},
            "end_point":{"za":42.74073,"Ba":-84.48378}
        },{ 
                    //more steps go here
//end steps array
}}],

        "duration":{"value":12309,"text":"3 hours 25 mins"},
        "distance":{"value":66198,"text":"41.1 mi"},
        "start_location":{"za":42.66069,"Ba":-84.07321},
        "end_location":{"za":42.27668,"Ba":-83.74076},
        "start_address":"E Grand River Ave, Fowlerville, MI 48836, USA",
        "end_address":"angell hall, 435 S State St, Ann Arbor, MI 48109, USA",
        "via_waypoint":[]
        //end leg array
        }],

"copyrights":"Map data ©2011 Google",
"warnings":["Bicycling directions are in beta. Use caution – This route may contain streets that aren't suited for bicycling."],
"waypoint_order":[0],
"bounds":{"U":{"b":42.276680000000006,"d":42.740840000000006},"O":{"d":-84.4838,"b":-83.73996000000001}},
"optimized_waypoint_order":[0]}],
"Ef":{"origin":"east lansing, mi","destination":"1139 Angell Hall 435 S. State Street Ann Arbor, MI 48109",
"waypoints":[{"location":"Bloated Goat Saloon, East Grand River Avenue, Fowlerville, MI","stopover":true}],"optimizeWaypoints":false,"travelMode":"BICYCLING"}

Используя AJAX, я отправил этот объект в PHP для его декодирования и сохранения в базе данных.

Единственная проблема в том, что я не знаю, как разобрать JSON в PHP ... Я чувствую себя как собака, которая действительно поймала машину, за которой гонялся ... Я не знаю, что делать дальше.

Итак, мой вопрос: Как взять приведенный выше массив и превратить его во что-то, что PHP может отправить в базу данных MySQL (у меня уже настроена структура базы данных)? Я не очень хорошо разбираюсь в языках программирования, поэтому, если бы вы могли написать свой ответ самым простым способом, я был бы очень благодарен.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

Вы можете просто сохранить строку JSON непосредственно в базе данных в текстовом поле.

Альтернативно, если вы хотите прочитать отдельные поля в PHP, используйте функцию json_decode, чтобы превратить строку JSON вмассив PHP.

http://php.net/manual/en/function.json-decode.php

1 голос
/ 20 февраля 2011

Преобразуйте объект json в объект / массив, который можно использовать в движке PHP, который вы используете json_decode(), например:

$context = json_decode($json_feed);

и они используют как внутренний массив:

if($context["status"] == "OK"){/*...*/}
foreach($context["routes"] as $Route)
{
     //have Fun Walking
}

Если вы хотите отправить массив в базу данных оптом, т. Е. Нет отдельных полей в базе данных, тогда вы можете использовать serialize для создания обратимой строки, которая может быть сохранена в базе данных, а затем unserialize для преобразования обратно в перечисляемую сущность php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...