"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的值组成一个数组。
$arr = json_decode($jobs); for ($i=0; $i<count($arr); $i++) $result[] = $arr[$i]['mark'];
写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')); ?>
有一个词叫 JSONPath 懂的自然懂
来一段Java的
java版
https://github.com/alibaba/fastjson/wiki/JSONPath
js/php
http://goessner.net/articles/JsonPath/
只是传播一个概念,当然追求效率自己写也不是很复杂,就是一个遍历
php
$arr = array_column(json_decode($json, true),'mark');
echo $arr[3];//group:4