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

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);




  
?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值