PHP 는 JSON 과 json 을 배열 로 복원 합 니 다.
5.2 버 전부터 PHP 원생 제공 jsonencode()와 jsondecode()함수,전 자 는 인 코딩 에 사용 되 고 후 자 는 디 코딩 에 사 용 됩 니 다.
1.jsonencode()
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
출력
{"a":1,"b":2,"c":3,"d":4,"e":5}
대상 변환 의 예 를 다시 봅 니 다.
$obj->body = 'another post';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);
출력[/code]
{
"body":"another post",
"id":21,
"approved":true,
"favorite_count":1,
"status":null
}
[/code]
json 은 utf-8 인 코딩 문자 만 받 기 때문에 jsonencode()의 인 자 는 utf-8 인 코딩 이 어야 합 니 다.그렇지 않 으 면 빈 문자 나 null 을 얻 을 수 있 습 니 다.중국어 로 GB 2312 인 코딩 을 사용 하거나 외국어 로 ISO-8859-1 인 코딩 을 사용 할 때 특히 주의해 야 한다.
2.색인 배열 과 관련 배열
PHP 는 두 개의 배열 을 지원 합 니 다.하 나 는'값'(value)만 저장 하 는 색인 배열(indexed array)이 고,다른 하 나 는'이름 값 쌍'(name/value)을 저장 하 는 관련 배열(associative array)입 니 다.
javascript 은 관련 배열 을 지원 하지 않 기 때문에 jsonencode()는 색인 배열(indexed array)만 배열 형식 으로 바 꾸 고 관련 배열(associative array)을 대상 형식 으로 바 꿉 니 다.
예 를 들 어 현재 색인 배열 이 있 습 니 다.
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
출력
["one","two","three"]
연결 배열 로 바 꾸 면:
$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');
echo json_encode($arr);
출력
{"1":"one","2":"two","3":"three"}
데이터 형식 이'[]'(배열)에서'{}'(대상)으로 바 뀌 었 음 을 주의 하 십시오.'색인 배열'을'대상'으로 강제로 바 꿀 필요 가 있다 면 이렇게 쓸 수 있 습 니 다.
json_encode( (object)$arr );
혹은
json_encode ( $arr, JSON_FORCE_OBJECT );
3.클래스(class)의 전환다음은 PHP 클래스 입 니 다.
class Foo {
const ERROR_CODE = '404';
public $public_ex = 'this is public';
private $private_ex = 'this is private!';
protected $protected_ex = 'this should be protected';
public function getErrorCode() {
return self::ERROR_CODE;
}
}
현재,이 종류의 실례 를 json 변환 합 니 다.
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
출력 결 과 는?
{"public_ex":"this is public"}
공개 변수(Public)를 제외 한 다른 것들(상수,사유 변수,방법 등)을 모두 잃 어 버 린 것 을 볼 수 있다.4.jsondecode()
이 함 수 는 json 텍스트 를 해당 하 는 PHP 데이터 구조 로 변환 하 는 데 사 용 됩 니 다.다음은 하나의 예 이다.
$json = '{"foo": 12345}';
$obj = json_decode($json);
print $obj->{'foo'}; // 12345
일반적인 상황 에서 jsondecode()는 항상 배열 이 아 닌 PHP 대상 을 되 돌려 줍 니 다.예 를 들 면:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
결 과 는 PHP 대상 생 성:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
PHP 관련 배열 을 강제로 생 성 하려 면 jsondecode()는 인자 true 를 추가 해 야 합 니 다.
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));
결 과 는 관련 배열 을 만 들 었 습 니 다:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
5.jsondecode()의 일반적인 오류아래 세 가지 제 이 슨 의 문법 은 모두 틀 렸 습 니 다.당신 은 어디 에 잘못 되 었 는 지 볼 수 있 습 니까?
$bad_json = "{ 'bar': 'baz' }";
$bad_json = '{ bar: "baz" }';
$bad_json = '{ "bar": "baz", }';
이 세 문자열 에 json 을 실행 합 니 다.decode()는 모두 null 로 돌아 가 잘못 보고 합 니 다.첫 번 째 오 류 는 json 의 구분자(delimiter)는 작은 따옴표 만 사용 할 수 있 고 작은 따옴표 만 사용 할 수 없습니다.두 번 째 오 류 는 json 이름 값 이 맞 는'이름'(가짜 왼쪽 부분)입 니 다.어떤 경우 에 도 작은 따옴표 를 사용 해 야 합 니 다.세 번 째 오 류 는 마지막 값 이후 에 쉼표(trailing coma)를 추가 할 수 없습니다.
또한,json 은 대상(object)과 배열(array)만 표시 할 수 있 으 며,문자열 이나 수치 에 json 을 사용 하면decode(),null 로 돌아 갑 니 다.
var_dump(json_decode("Hello World")); //null
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.