首页 > 取出json数据中的某一项组成一个数组?

取出json数据中的某一项组成一个数组?

"jobs": [
                    {
                        "name": "iOS开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:1"
                    },
                    {
                        "name": "金融集团CEO",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "北京",
                        "mark": "group:2"
                    },
                    {
                        "name": "运维开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "上海",
                        "mark": "group:3"
                    },
                    {
                        "name": "资深视觉设计师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:4"
                    }
                    ]

怎么取出json数据中的mark这一项,例如我需要取group:4这个值得时候就可以用数组下标的方式,或者我怎么单独取出group:4这个数值?如果我想取出group后面的值呢,例如group:1取出1,用group的值组成一个数组。


php
$arr = array_column(json_decode($json, true),'mark'); echo $arr[3];//group:4

有一个词叫 JSONPath 懂的自然懂

来一段Java的

java版
https://github.com/alibaba/fastjson/wiki/JSONPath

js/php
http://goessner.net/articles/JsonPath/

只是传播一个概念,当然追求效率自己写也不是很复杂,就是一个遍历


javascript比较多,很少写PHP了,可能PHP的数组有更好的API

<?php
$jsonString = '[
                    {
                        "name": "iOS开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:1"
                    },
                    {
                        "name": "金融集团CEO",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "北京",
                        "mark": "group:2"
                    },
                    {
                        "name": "运维开发工程师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "上海",
                        "mark": "group:3"
                    },
                    {
                        "name": "资深视觉设计师",
                        "salary": "10k-15k",
                        "url": "www.baidu.com",
                        "desc": "广州",
                        "mark": "group:4"
                    }
                    ]';



function GetSubArray($jsonString, $mark) {
    // json字符串转数组
    $array = json_decode($jsonString, true);
    // 创建需要返回的新数组
    $newArray = [];
    // 遍历数组,根据$mark条件,添加到新数组中去
    for ($i = 0; $i < count($array); $i++) {
        if ($array[$i]['mark'] === $mark) {
            array_push($newArray, $array[$i]);
        }
    }
    return $newArray;
}

var_dump(GetSubArray($jsonString, 'group:4'));

?>

$arr = json_decode($jobs);
for ($i=0; $i<count($arr); $i++)
  $result[] = $arr[$i]['mark'];
【热门文章】
【热门文章】