php如何将普通数据转化为json数据

news2025/7/19 9:05:17

PHP API接口必备之输出json格式数据

在日常的开发工作中免不了要写接口,json格式文本的输出是制作接口必须掌握的,现在通行的接口基本是采用json格式的数据,简单的php json文件输出

json接口如何生成?或者是如何将普通数据转化为json数据?

注意:如果不加header直接输出json_encode的值的话,返回的是字符串不是对象,js那边就需要先eval('('+data+')')转化为对象,再进行取值

<?php
header('content-type:application/json;charset=utf8');

$arr=array(
array(

'name'=>'zhangsan',
'sex' =>'man',
'age' =>18,
),

array(
'name'=>'lisi',
'sex' =>'women',
'age' =>20,
),

array(
'name'=>'wangwu',
'sex' =>'man',
'age' =>19,
),

);

$json=json_encode($arr);
echo $json;

?>

这样,我们就可以得到一个输出形式为json格式的页面

php 如何调用json数据,php中json数据接口创建及调用_是小谷吗的博客-CSDN博客

使用 php 来做一个简单的接口,客户端传入数据,该接口返回 JSON 格式数据

使用php 造json数据接口

<?php

/*
* (PHP简单封装JSON数据接口)
* @param integer $code 状态码
* @param string $message 提示信息
* @param array $data 数据
* return json(string)
*/ 

header('content-type:application/json;charset=utf8');

class Response {
    public static function json($code, $message = '', $data = []){

        # 判断参数有效性及错误处理
            // code...
        
        # 结果(最终数组)
        $result = [
            "code" => $code,
            "message" => $message,
            "data" => $data
        ];

        # 转换为json并打印测试
        echo json_encode($result);
        exit;
    }
}

# 创建数组
$arr = [
    "id" => "1",
    "name" => "wang"
];

# 调用json接口(假设状态码200代表成功)
Response::json(200, "数据返回成功", $arr);

?>

这样,我们就可以得到一个输出形式为json格式的页面

<?php
    header('Content-Type:application/json;charset=utf8');
    $arr = [
        "download_url" => "http://xxx.xxx.xxx.xxx/update/EasyClick/release.iec",
        "version" => "1.1.0",
        "dialog" => true,
        "msg" => "更新公告",
        "force" => false
    ];
    echo json_encode($arr);
?>

PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

PHP json_decode() 函数用于JSON 格式的字符串进行解码,并转换为 PHP 变量

<?php

header('content-type:application/json;charset=utf8');

   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   $en_ret = json_encode($arr);
   echo $en_ret;

   echo "<br>";
   $de_ret = json_decode($en_ret);
   echo $de_ret->e;
   echo "<br>";

  
?>

JSON 值可以是:

  1. 数字(整数或浮点数)
  2. 字符串(在双引号中)
  3. 逻辑值(true 或 false)
  4. 数组(在方括号中)
  5. 对象(在花括号中)
  6. null。

前端一般和后端传递数据选择JSON是因为

(1)JSON是纯文本格式,是独立于语言和平台的。

(2)生成和解析相对于XML而言要简单。

(3)读写的速度更快。

php中json_encode编码成功的话返回一个JSON格式的字符串,失败的话返回一个false(var_dump一下可以看看是不是string类型)
后端将这个json数据(string)返回给前端,前端再对这个json数据也就是string进行下一步处理

而json_decode($jsondata,bool),一般是将前台传来的json数据(string)解码为对象类型(bool为false时,默认false),当bool为true时,则将json(string)转化为数组类型,再进下一步处理

对象类型的操作和数组类型是不一样的
 

<?php

        header('content-type:application/json;charset=utf8');
        $data = array('a'=>'好','b'=>'hi','c'=>'good','d'=>'nice');
        $jsondata = json_encode($data,JSON_UNESCAPED_UNICODE);//加上JSON_UNESCAPED_UNICODE就不会自动对中文编码
        echo $jsondata;
        //结果{"a":"好","b":"hi","c":"good","d":"nice"},一条JSON格式的字符串
        
        $array = json_decode($jsondata,TRUE);
        var_dump($array['b']);//调用数组元素
        
        $obj = json_decode($jsondata);
        var_dump($obj->c);//调用对象元素


  
?>

注意: json_encode 和 json_decode只支持utf-8编码的中文字符,GBK的中文字符要用json就得转换一下
PHP5.4版本,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。

PHP数组与JSON互相转换

PHP数组与JSON互相转换,数组转json:json_encode();json转数组:json_decode();

使用json_encode转json时会发现中文字符会出现乱码

只需要在json_encode();函数中加入JSON_UNESCAPED_UNICODE即可。

1、PHP数组转JSON
 

<?php

//header('content-type:application/json;charset=utf8');

$array = Array('title' => '标题', 'url' => 'meitu.jpg');
$json = json_encode($array); 
echo $json;
//输出结果: {"title":"\u6807\u9898","url":"meitu.jpg"}


  
?>

2、PHP数组转JSON中文字符不乱码

<?php

//header('content-type:application/json;charset=utf8');

$array = Array('title' => '标题', 'url' => 'meitu.jpg');
$json = json_encode($array, JSON_UNESCAPED_UNICODE); 
echo $json;
//输出结果: {"title":"标题","url":"meitu.jpg"}


  
?>

3、PHP JSON转数组

<?php


$json = '{"title":"标题","url":"meitu.jpg"}';
$array_json=json_decode($json,true);
print_r($array_json);



  
?>

4、PHP JSON转对象

<?php


$json = '{"title":"标题","url":"meitu.jpg"}';
$Object_json=json_decode($json,false);
print_r($Object_json);




  
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐超好用的Java快速开发平台

快速开发平台 - Spring Boot 技术交流 交流 QQ 群&#xff08;千人大群&#xff09;&#xff1a;127515876、209330483、223507718、709534275、730390092、1373527、183903863(外包)码云Gitee&#xff1a;JeeSite 4.x and 5.x: &#x1f44d; Java 快速开发平台&#xff0c;…

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现

深度学习网络模型 MobileNet系列MobileNet V1、MobileNet V2、MobileNet V3网络详解以及pytorch代码复现 1、DW卷积与普通卷积计算量对比DW与PW计算量普通卷积计算量计算量对比 2、MobileNet V1MobileNet V1网络结构MobileNet V1网络结构代码 3、MobileNet V2倒残差结构模块倒残…

构建强大的产品级NLP系统:PaddleNLP Pipelines端到端流水线框架解析

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

资源管理器关闭了怎么打开

1.按住电脑 ctrlaltdelete 选择任务管理器 2.在任务管理器中&#xff0c;点击左上角的【文件】–>【运行新任务】 输入 然后会弹出新建任务窗口&#xff0c;在其中输入命令&#xff1a;【explorer.exe】

Mentor PADS BOM物料清单的创建方法教程

BOM表即物料清单。当原理图设计完成之后&#xff0c;就可以开始整理物料清单准备采购元件了。如何将设计中用到的元件的信息吗进行输出以方便采购呢&#xff1f;这个时候就会用到BOM表了。 1、执行菜单命令“文件”→“报告”&#xff0c;进入“报告”对话框&#xff0c;在“选…

CRM软件助力企业科学决策

我们常说“选择大于努力”&#xff0c;这对于企业发展同样适用。每一家企业管理者在日常工作中都要做大量决策&#xff0c;员工只是将决策落地&#xff0c;而这些决策往往决定了公司大大小小项目实施的顺利与否。因此&#xff0c;采用CRM软件助力企业科学决策显得十分关键。 越…

手机app 爬虫

近期在做某个项目,涉及到需要对手机app的进行数据爬取。在上一篇博文中,讲述了以模拟机为例的配置操作流程,这里将以苹果手机为例进行描述。 下面将讲述具体配置步骤 1、安装 抓包软件 fiddler (Fiddler | Web Debugging Proxy and Troubleshooting Solutions) ​ 下载后…

Orcad属性过滤器的使用技巧

Orcad内置的属性过滤器可以完美的解决由于属性太多导致的不好整理的问题。下面简单介绍一下方法和过程。 1、打开过滤器 2、新建属于自己的过滤器 3、进行器件属性过滤及调整的顺序&#xff08;注这时一定关闭ORCAD&#xff0c;来操作&#xff09; 3.1 安装目录下找到\Cadenc…

干货来袭 只需套用模板就能制作的电子相册的网站

随着科技的不断发展&#xff0c;电子相册已经成为了我们生活中不可或缺的一部分。但是&#xff0c;制作电子相册的过程却往往让人感到头疼。那么&#xff0c;有没有一种简单易用的方法来制作电子相册呢&#xff1f;今天&#xff0c;就给大家介绍一款只需套用模板就能制作的电子…

Linux学习第29天:设备树下的 platform 驱动编写:举步维艰,那就脚踏实地,一步一个脚印,慢慢来。

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 同志们&#xff0c;学习到现在&#xff0c;是不是有点懵逼的感觉。感觉该学的都学了&#xff0c;又感觉啥都没学会。就这样懵逼的状态进入到下一节的学习。这就是…

Spring源码分析篇一 @Autowired 是怎样完成注入的?究竟是byType还是byName亦两者皆有

1. 五种不同场景下 Autowired 的使用 第一种情况 上下文中只有一个同类型的bean 配置类 package org.example.bean;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FruitCo…

06、Caused by: java.nio.charset.MalformedInputException: Input length = 1

目录 问题&#xff1a;原因&#xff1a;解决方法&#xff1a; 问题&#xff1a; Caused by: java.nio.charset.MalformedInputException: Input length 1 原因&#xff1a; 应该是中文有哪些文字导致的。 yml 编码格式出错 解决方法&#xff1a; 直接这里把GBK改成 utf-8…

做抖音短视频会经历哪些阶段?

今天来聊聊那些在抖音做大的老板&#xff0c;从开始到后期经历的四个阶段&#xff0c;以及每个阶段的工作重心 1、0—1的阶段 0—1的起步阶段是整个阶段最有难度的一环&#xff0c;很多人对0到1的认知是有错误的&#xff0c;以为爆过几条视频就已经进阶了 想要实现0-1的突破…

使用 Docker 部署高可用 MongoDB 分片集群

使用 Docker 部署 MongoDB 集群 Mongodb 集群搭建 mongodb 集群搭建的方式有三种&#xff1a; 主从备份&#xff08;Master - Slave&#xff09;模式&#xff0c;或者叫主从复制模式。副本集&#xff08;Replica Set&#xff09;模式。分片&#xff08;Sharding&#xff09;…

装备制造行业云MES解决方案

一、装备制造行业发展现状&#xff1a; 机械制造业主要是通过对金属原材料物理形状的改变、加工组装进而成为产品。机械制造业生产的主要特点是&#xff1a;离散为主、流程为辅、装配为重点。 工业生产基本上分为两大方式&#xff1a; 1.离散型&#xff1a;离散型是指以一个…

智能问答进阶之路:RAG(大模型检索增强生成)框架详解与实战,融合检索与生成助力智能系统更上层楼

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

市场洗牌,全新一代MiniLED背光技术大放异彩

MiniLED背光是一种采用微小尺寸LED灯珠作为背光源的技术。相比传统的LED背光&#xff0c;MiniLED采用更小的LED尺寸&#xff08;通常在100微米至200微米之间&#xff09;&#xff0c;使得显示屏幕的亮度和对比度得以大幅提升。MiniLED背光技术作为显示行业的新宠儿&#xff0c;…

外汇天眼:3大假投资诈骗手法公开,助你识破假券商及黑平台!

去年以来物价持续上涨&#xff0c;不少人的薪水涨幅却不如预期&#xff0c;导致资产实质缩水。 面对生活成本不断增加&#xff0c;愈来愈多人意识到投资的重要性&#xff0c;并且开始寻找各种获利的渠道与机会。 与此同时&#xff0c;诈骗集团也利用人们想赚钱的心理&#xff0…

家用小型洗衣机哪款性价比高?好用不贵内衣洗衣机测评

很多人在休息的时候&#xff0c;都会抽出一些时间来清洗自己的衣物&#xff0c;但是他们忽略了一个问题&#xff0c;内裤不能和平时穿的外套一起用洗衣机清洗&#xff0c;主要原因是一般的洗衣机不能把内衣清洗干净&#xff0c;而且如果和平时穿的外套一起洗的话&#xff0c;内…

【嵌入式项目应用】__用于搭建调试输出、建立时间系统的嵌入式框架“Zorb Framework”

目录 一、什么是Zorb&#xff1f; 二、嵌入式环境搭建 三、调试输出 四、实现断言 五、建立时间系统 六、结束语 (*&#xffe3;︶&#xffe3;)创作不易&#xff01;期待你们的 点赞、收藏和评论喔。 一、什么是Zorb&#xff1f; Zorb Framework是一个基于面向对象的思…