Что это за объект и как его использовать? - PullRequest
3 голосов
/ 13 июня 2010

Какое будет правильное имя для этого типа массива?

Есть 3 основных раздела и 4 подраздела, состоящих из «assignTime», «text», «url» и «validToTime». Как начать преобразовывать его в объект? Если бы был только 1 основной раздел, то было бы довольно просто сделать это с 3 основными частями, и никакая идентификация для каждого основного раздела не заставила бы меня почесать голову, с чего начать.

Любой совет приветствуется.

[{
"issuedTime":"7:13pm Sunday 13 June 2010",
"text":"\nAmended 7:10pm.\n\nText text and more text\n",
"url":"\/folder\/fc\/name.png",
"validToTime":"12:00am Monday 14 June 2010"
},{
"issuedTime":"8:33pm Sunday 13 June 2010",
"text":"\nText and more text.\n",
"url":"\/folder\/fc\/name.png",
"validToTime":"12:00pm Monday 14 June 2010"
},{
"issuedTime":"10:40am Sunday 13 June 2010",
"text":"\nAnd even more text.",
"url":"\/folder\/fc\/name.png",
"validToTime":"12:00am Tuesday 15 June 2010"
}
]

Ответы [ 4 ]

10 голосов
/ 13 июня 2010

JSON (сокращение от JavaScript Object Обозначение) это легкий текстовый открытый стандарт, разработанный для удобочитаемый обмен данными. это полученный из JavaScript язык программирования для представления простые структуры данных и ассоциативные массивы, называемые объектами. Несмотря на его отношение к JavaScript, это независимый от языка, с парсерами доступно практически для каждого язык программирования.

Вы можете легко преобразовать его в массив php с помощью функции json_decode, вот пример с сайта php:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json, true));

Результат:

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

Второй параметр json_decode - это то, должен ли он быть преобразован в ассоциативный массив. Если вы не укажете второй параметр, вывод будет выглядеть так:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

Итак, вы можете преобразовать его в массив и пройти по нему как:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
$array = json_decode($json, true);
print_r($array);

foreach($array as $key => $value)
{
   // manipulate the var $value
}
2 голосов
/ 13 июня 2010

Вот как разобрать этот json

<?php
$json = '[{
    "issuedTime":"7:13pm Sunday 13 June 2010",
    "text":"\nAmended 7:10pm.\n\nText text and more text\n",
    "url":"\/folder\/fc\/name.png",
    "validToTime":"12:00am Monday 14 June 2010"
    },{
    "issuedTime":"8:33pm Sunday 13 June 2010",
    "text":"\nText and more text.\n",
    "url":"\/folder\/fc\/name.png",
    "validToTime":"12:00pm Monday 14 June 2010"
    },{
    "issuedTime":"10:40am Sunday 13 June 2010",
    "text":"\nAnd even more text.",
    "url":"\/folder\/fc\/name.png",
    "validToTime":"12:00am Tuesday 15 June 2010"
}]';
// Parse the json into a PHP array that holds multiple "stdClass Object"s
$obj = json_decode($json);  
// Iterate through each "stdClass Object" and show what it contains  
foreach($obj as $var => $value)
{
    echo "Number: $var <br/>";    
    echo "Issued: " . $obj[$var]->issuedTime . "<br/>";                    
    echo "Text: " . $obj[$var]->text . "<br/>";    
    echo "URL: " . $obj[$var]->url . "<br/>";    
    echo "Valid to: " . $obj[$var]->validToTime . "<br/>";       
    echo "<br/>";
}
?>

Получив $ obj, вы можете получить к нему доступ, как в цикле foreach выше, или для доступа, скажем, к тексту во втором листинге, который вы используете:

echo $obj[1]->text; // Second listing, since the first listing is $obj[0]

И HTML-ссылка с текстом для того же:

echo '<a href="' . $obj[1]->url . '">' . $obj[1]->text . '</a>';
1 голос
/ 13 июня 2010
1 голос
/ 13 июня 2010

Вы пробовали json_decode () ?Следует правильно разобрать это на stdObject.

...