首页>建站相关>php接收处理json数据

php接收处理json数据

JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。

XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。

简单地说,JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。

json数据的编解码

  • json_encode():编码json数据
  • json_decode():解码json数据

访问某个api,往往会收到编码后的json数据,这个时候直接输出,有可能是一堆肉眼无法理解的乱码,所以我们第一步先要做还原数据的工作,也就是解码数据:

$url='https://xxx.api.com';
$resData=file_get_contents($url);
$resJson=json_decode($resData);

json数据的再组合

{"code":200,
"msg":"success",
"data":{"date":"2022-04-26",
    "news":["1、国家航天局:中国将着手组建近地小行星防御系统,应对近地小行星撞击威胁。外交部:旨在应对全人类面临的共同风险;","2、人社部:参加个人养老金制度可享受国家税收优惠政策;","3、四川绵阳:5月20日起,业主可申请提取本人及配偶住房公积金用于电梯增设;兰州:取消住房公积金再次申贷时间限制,调整二套房认定规则;","4、25日,A股三大指数集体收跌,沪指重挫逾5%失守3000点,两市超4600股下跌,其中有683只跌停;","5、河南南阳24日晚遭暴雨袭击,最大降水量196.7毫米,有道路积水致临街商铺被淹,居民家中雨水倒灌,已启动防汛三级应急响应;","6、港媒:香港葵涌货柜码头5辆货车25日凌晨起火爆炸,初步认为起火原因可疑,港警刑事调查队跟进;","7、俄空天军研究院火灾事故已造成17人遇难,总过火面积约为1000平方米;","8、韩国候任总统尹锡悦:中美紧张局势对韩国可能是机遇,也可能是风险,如被邀请加入美澳印日的“四方安全对话“,“将考虑加入“;","9、俄媒:俄罗斯批准了近200个外国品牌的“水货“清单,苹果和特斯拉等产品也在清单内;俄军官:“萨尔马特“洲际导弹可配数枚高超音速导弹,拟年内入役;","10、美国西南部大规模野火蔓延3州,大量民众被疏散,已投入上千人灭火,已致至少1死,15名消防员受伤;","11、日本东电25日开始整修海底隧道,为福岛核污水排海作准备,日本政府计划于2023年春开始排放;","12、外媒:推特开始与马斯克进行交易谈判。此前,马斯克向推特股东提供了收购提案的融资细节;","13、当地24日,美国务卿和防长在乌克兰会见了泽连斯基:承诺将提供7亿多美元的直接和间接军事援助,美外交官将于本周返回乌境内;","14、乌克兰删除反法西斯宣传片中和希特勒、墨索里尼并列的日本天皇,并向日本道歉:希望日本继续帮助乌克兰;","15、马克龙以58.54%的得票率赢得法国总统选举:法国多地爆发抗议,巴黎街头骚乱横行,示威者与警方发生冲突,一汽车冲向警察,警方开枪打死两人;"],
    "weiyu":"【微语】有梦就该勇敢去追,这一路你可以哭,但你不能怂。",
    "image":"https://file.alapi.cn/60s/202204261650906003.png",
    "head_image":"https://file.alapi.cn/60s/202204261650906003_head.png"},
    "time":1650989323,
    "log_id":377610353661550592
}

对于json数据种的文本,我们可以利用这样的格式直接输出:

$resWeiyu = $resJson -> data -> weiyu;
对于数组类型的数据,如果是需要将其插入至页面或者保存到文章当中的话,我们需要对数据进行一下遍历,遍历的同时可以为其添加一些额外的元素,比如用p元素包裹数组中的每个字段:
foreach( $resNews as $arr){
    $resPost.='&lt;p&gt;'.$arr.'</p>';
}

遍历之后,我们也可以继续组合其他的单一文本数据:

$resPost.='&lt;p&gt;'.$resWeiyu.'</p>';

尝试发布组合后的数据

在wordPress中,函数wp_insert_post用于插入或者更新一篇新的文章,将组合后的数据传递给wp_insert_post,就可以实现一篇文章的自动发布:

$my_post = array(
    'post_title' => substr(date("Y-m-d"), 2).' 60秒读懂世界',
    'post_content' => $resPost ,
    'post_status' => 'publish',
    'post_author' => 1,
);
wp_insert_post( $my_post );

标签: PHP

移动端可扫我直达哦~

推荐阅读

php 2024-04-24

Php中数组array的定义增删等相关操作

PHP 中的 array 实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型针对多种不同用途进行了优化; 它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。 由于 arr...

建站相关 PHP

php 2024-04-20

php利用SimpleXML模块解析xml文件

本来想用一个xml文件来获取不断更新的数据,接触这个模块后,发现似乎不能在顶部插入节点,比如有个channel节点,插入子节点始终只能从底部插入,但博主又希望新的内容在channel节点的头部。每次重新装配节点似乎过于复杂,考虑利用j...

建站相关 PHP

php 2024-04-19

php获取远程xml文件并保存到本地

“自从联盟和部落并肩作战,共同抵抗燃烧军团的入侵已经过去了四年。”…错了,自从上次利用rm -rf清洗掉:“虾比比”站点的数据,已经过去了两年。曾经利用php获取远程文件并保存到本地的知识如同部落和联盟之间脆弱的协议,早已荡然无存。倒...

建站相关 PHP

php 2023-10-27

为博客文章添加是否已被百度收录的提示信息

部分主题里在文章的标题栏下方会显示一些文章的相关信息,比如目录啊,作者啊,文章的发布日期等等。其中也有包含文章是否被百度收录的,本身“小鸟数据”这个站点配置了“sitemap.xml”,也提交了百度,是否收录就我为鱼肉了。但是偶尔还是...

建站相关 PHP

php 2023-05-03

php中的替代语法switch的冒号写法

最早接触php语句,是尝试查看wordpress模板的源代码。所以相比常规的大括号写法,更为熟悉的反而是这类带冒号的写法。真正尝试过修改模板之后,会真切体会到这种书写方式的便利。它使得HTML和PHP混合页面代码更加干净整齐,也使代码...

建站相关 PHP

php 2022-10-25

php该用什么命令打印数组

对于wordpress的命令不熟悉,echo打印值的时候经常返回一个array对象。如果不知道array的内部结构,提取具体数据就无从下手,所以有时候我们会想要打印出数组的所有内容,以观察该数组的数据结构。php中有两个命令可以在屏幕...

建站相关 PHP

php 2022-10-22

php在线解压解决免费空间压缩包过大问题

用过一段国外的免费空间,一般都是白天访问速度凑合,一到晚上半天打不开后台页面,前台还是可以访问的,也就比白天慢几条街。因为白天要上班,所以一般博主也就晚上打开站点学习一下建站呀修改主题呀之类的操作,由于正常使用时间段完美被错开,所以最...

建站相关 PHP

php 2022-10-22

php中的单引号和双引号

解析变量上的区别PHP会解析双引号中的变量,而不会解析单引号中的变量。也就是说,如果使用单引号定义的字符串中出现变量,在输出时变量会被原样输出,不会解析成变量的值。而如果使用双引号定义的字符串中存在变量,在输出时变量会被解析为具体的值...

建站相关 PHP

php 2022-10-21

后台php如何与前端js进行数据交换

想用js获取wordpress的options中的部分数据,查询到几种数据交换的方法,先做个记录,后续补完。同页面内的数据交换需要获取的是json数据,直接用php在页面中echo变量,页面上的js可以直接使用options变量,很方...

建站相关 PHP

php 2022-10-17

php对于json数据的编码与解码

想实现一个wordpress后台,跟着阿树工作室的教程学习。自己php基础薄弱,看到利用类实现后台的章节就跟不上了,刚好学到js的极简方法实现一个类,考虑能否在前台用类实现页面,将页面数据汇总成json,统一提交给后台,这样就避开了不...

建站相关 PHP

php 2022-10-13

php中的in_array()函数

in_array()函数搜索数组中是否存在指定的值。如果search参数是字符串且type参数被设置为 TRUE,则搜索区分大小写。in_array的语法in_array(search,array,type) 参数 描述 ...

建站相关 PHP

php 2022-10-12

centos下yum安装php7.4remi源

一直使用centos7.x版本,利用yum工具安装一些软件,centos的更新与默认软件选择都相对保守,centos7.x版本中yum默认来源的php版本一般都是php5.4,到了centos8.x版本,php版本才更新为php7.2...

建站相关 PHP