如何使用php从json字符串中获取数据

时间:2017-08-11 12:22:47

标签: php arrays json

我有json字符串,我想从此字符串中获取产品数据如何实现此目的。请有人帮助我。

下面是我的字符串,

{"num_rows":2,"row":{"setting":"a:6:{s:4:\"name\";s:9:\"Featutred\";s:7:\"product\";a:2:{i:0;s:3:\"145\";i:1;s:3:\"148\";}s:5:\"limit\";s:1:\"5\";s:5:\"width\";s:3:\"200\";s:6:\"height\";s:3:\"200\";s:6:\"status\";s:1:\"1\";}"},"rows":[{"setting":"a:6:{s:4:\"name\";s:9:\"Featutred\";s:7:\"product\";a:2:{i:0;s:3:\"145\";i:1;s:3:\"148\";}s:5:\"limit\";s:1:\"5\";s:5:\"width\";s:3:\"200\";s:6:\"height\";s:3:\"200\";s:6:\"status\";s:1:\"1\";}"},{"setting":"a:6:{s:4:\"name\";s:17:\"Featured Products\";s:7:\"product\";a:2:{i:0;s:3:\"145\";i:1;s:3:\"146\";}s:5:\"limit\";s:1:\"4\";s:5:\"width\";s:3:\"200\";s:6:\"height\";s:3:\"200\";s:6:\"status\";s:1:\"1\";}"}]}

1 个答案:

答案 0 :(得分:1)

混合使用JSON和PHP序列化数据。

<?php
$string = '{"num_rows":2,"row":{"setting":"a:6:{s:4:\"name\";s:9:\"Featutred\";s:7:\"product\";a:2:{i:0;s:3:\"145\";i:1;s:3:\"148\";}s:5:\"limit\";s:1:\"5\";s:5:\"width\";s:3:\"200\";s:6:\"height\";s:3:\"200\";s:6:\"status\";s:1:\"1\";}"},"rows":[{"setting":"a:6:{s:4:\"name\";s:9:\"Featutred\";s:7:\"product\";a:2:{i:0;s:3:\"145\";i:1;s:3:\"148\";}s:5:\"limit\";s:1:\"5\";s:5:\"width\";s:3:\"200\";s:6:\"height\";s:3:\"200\";s:6:\"status\";s:1:\"1\";}"},{"setting":"a:6:{s:4:\"name\";s:17:\"Featured Products\";s:7:\"product\";a:2:{i:0;s:3:\"145\";i:1;s:3:\"146\";}s:5:\"limit\";s:1:\"4\";s:5:\"width\";s:3:\"200\";s:6:\"height\";s:3:\"200\";s:6:\"status\";s:1:\"1\";}"}]}';    

$dataObject = json_decode($string);
foreach($dataObject->rows as $row){

    $productData = unserialize($row->setting);
    print_r($productData);

}

将导致

Array
(
    [name] => Featutred
    [product] => Array
        (
            [0] => 145
            [1] => 148
        )

    [limit] => 5
    [width] => 200
    [height] => 200
    [status] => 1
)
Array
(
    [name] => Featured Products
    [product] => Array
        (
            [0] => 145
            [1] => 146
        )

    [limit] => 4
    [width] => 200
    [height] => 200
    [status] => 1
)

注意:上面的代码中没有错误检查,因为它是为您的特定示例编写的。如果您不确定输入数据是否正确(通常情况下),则需要检查JSON是否正常,对象是对象还是否需要属性等。