> 백엔드 개발 > PHP 튜토리얼 > javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

WBOY
풀어 주다: 2016-06-06 20:26:07
원래의
1461명이 탐색했습니다.

javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?
在PHP里面可以直接用json_decode($str),转回字符串。
为什么变成一个JSON对象了呢?难道PHP有默认解析?

直接输出是这样。javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

然后直接对其json_decode(,true)是这样。javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

回复内容:

javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?
在PHP里面可以直接用json_decode($str),转回字符串。
为什么变成一个JSON对象了呢?难道PHP有默认解析?

直接输出是这样。javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

然后直接对其json_decode(,true)是这样。javascript - JS 用AJAX用POST 传到PHP后台的JSON字符串为什么会成为一个对象?

首先你要明白JSON是什么,JavaScript Object Notation,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。说白了它就是一段字符串,由于并没有附加额外的标记,JS也可以直接作为对象处理,所以常用于数据交换。
PHP之所以认得JSON字符串,是因为PHP库中有JSON_parser来解析
这就像是两个部落之间虽然语言不通,但是约定一种东西做为统一货币来交换物品,这个‘物品’就是我们的数据


既然JS能直接处理JSON对象,那为什么有时AJAX请求拿到的JSON字符串还需要转为JSON对象,这就要分清JSON字符串JSON对象
JSON字符串:指的是符合JSON格式要求的JS字符串。如下:

<code class="js">var jsonStr = "{id:'1',name:'Fini',age:30}";</code>
로그인 후 복사

JSON对象:指符合JSON格式要求的JS对象。如下:

<code class="js">var jsonObj = { id: "1", name: "Fini", age: 30 };</code>
로그인 후 복사

在PHP中,相关的操作方法有json_encodejson_decode
json_encode理论上可以将除resourse外的任何数据类型转为JSON格式字符串(不过有些时候会失败~囧~)

<code class="php">$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
var_dump(json_encode($arr));
/**** result by php5.6 ****/
string '{"a":1,"b":2,"c":3,"d":4,"e":5}' (length=31)</code>
로그인 후 복사

json_decode就是将一个JSON格式字符串转为PHP的arrayobject,这取决于第二个参数(true/false)

<code class="php">$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
/**** result by php5.6 ****/
object(stdClass)[1]
  public 'a' => int 1
  public 'b' => int 2
  public 'c' => int 3
  public 'd' => int 4
  public 'e' => int 5

array (size=5)
  'a' => int 1
  'b' => int 2
  'c' => int 3
  'd' => int 4
  'e' => int 5</code>
로그인 후 복사

json_decode 默认转换为对象,后后面加 ture  才是array

PHP手册中关于 json_decode 的说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿