2014-02-18 2 views
-4

Я новичок в программировании на PHP, Мне нужно разобрать строку json. Это строка, что я, как JSON массивPHP Json Parser

[{"datetime":"17/02/2014 13:18:30","type":"testtype","locationid":"1","GPSType":"GOOGLE","GPSLatitude":"1.1","GPSLongtitude":"1.2","userid":"admin","brand":"1234567","numbers":["num1","num2","num3]}] 

В строке выше мне нужно разобрать число массив только.

+0

Используйте [ 'json_decode()'] (http://php.net/json_decode) - Но убедитесь, что строка JSON действительна, иначе она вернет 'NULL'. Строка JSON, которая у вас есть в вопросе, является *** не *** действительной (как вы можете проверить с помощью онлайн-валидатора, такого как http://jsonlint.com) –

+0

Используйте 'json_decode()'. –

+0

Если я просто [поиск] (https://duckduckgo.com/?q=parse+json+with+php), то соответствующий PHP [документация] (http://php.net/manual/en/function.json -decode.php) - это первый хит. – Quentin

ответ

-1

Как указано в комментариях, используйте json_decode.

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

[EDIT]

Для того, чтобы получить только "numbers" массив, просто попробуйте это:

$json = json_decode($input, true); 
$numbers = $json[0]["numbers"]; 

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

+0

Пожалуйста [ избегать ссылок только на ответы] (http://meta.stackoverflow.com/tags/link-only-answers/info). Ответы, которые являются «чуть больше, чем ссылка на внешний сайт» [могут быть удалены] (http://stackoverflow.com/help/deleted-answers). – Quentin

+0

Пожалуйста, прочитайте первую половину ответа и спросите себя: это ответ «ссылка только»? – mingos

+0

«всего лишь» – Quentin

0

Надеюсь, у вас есть строка JSON в вашем PHP-коде. В вашей строке JSON есть ошибка. Поскольку вы поддерживаете строку JSON в виде массива, вы можете следовать этому подходу. Это легко понять.

<?php 
    $json = '[ 
       { 
        "datetime": "17/02/2014 13:18:30", 
        "type": "testtype", 
        "locationid": "1", 
        "GPSType": "GOOGLE", 
        "GPSLatitude": "1.1", 
        "GPSLongtitude": "1.2", 
        "userid": "admin", 
        "brand": "1234567", 
        "numbers": ["num1", "num2", "num3"] 
       } 
      ]'; 

    $obj = json_decode($json); 
    $len = count($obj[0]->{'numbers'}); 
    for($i = 0; $i < $len; $i++) { 
     echo $obj[0]->{'numbers'}[$i].'<br>'; 
    } 
    ?> 

Выход был бы:

num1
пит2
num3