2014-11-24 3 views
1

나는 JSON 문자열json string을 PHP 배열로 변환하는 방법은 무엇입니까?

$testData = "{ 
     'data' :[{ 
      'id' : '201120121', 
      'bsid' : '200', 
      'bspaymentcode' : '12', 
      'service' : 'bed set', 
      'cost' : '2000', 
      'date_begin' : '12.12.14', 
      'date_end' : '01.01.15' 
     } , 
     { 
      'id' : '20133231', 
      'bsid' : '220', 
      'bspaymentcode' : '22', 
      'service' : 'sport center', 
      'cost' : '2000', 
      'date_begin' : '12.12.14', 
      'date_end' : '01.01.15' 
     }] 
    }"; 

var_dump(json_decode($testData,true));exit; 

에서 PHP 배열을 얻기 위해 노력하고 있어요하지만 난 NULL있다. 어떤 아이디어?

+1

귀하의 json은 유효하지 않습니다. 값에 작은 따옴표가 아닌 큰 따옴표를 사용해야합니다. – Anthony

답변

6

JSON은 문자열에 큰 따옴표를 사용합니다. 문자열에 작은 따옴표가 사용되므로 유효한 JSON이 아니며 json_decode은 NULL을 반환합니다. 당신이 (당신의 데이터 내용은 다른 변수에서이다) 변수의 따옴표를 변경할 수없는 경우

+0

답변 해 주셔서 감사합니다 – Almas

1

, 당신이 str_replace를 사용할 수 있다고 생각, 이것은 당신

$testData = "{ 
     'data' :[{ 
      'id' : '201120121', 
      'bsid' : '200', 
      'bspaymentcode' : '12', 
      'service' : 'bed set', 
      'cost' : '2000', 
      'date_begin' : '12.12.14', 
      'date_end' : '01.01.15' 
     } , 
     { 
      'id' : '20133231', 
      'bsid' : '220', 
      'bspaymentcode' : '22', 
      'service' : 'sport center', 
      'cost' : '2000', 
      'date_begin' : '12.12.14', 
      'date_end' : '01.01.15' 
     }] 
    }"; 
$testData = str_replace("'", '"', $testData); 

var_dump(json_decode($testData,true));exit; 
+0

감사합니다 지금 작동합니다 – Almas

0

스왑 큰 따옴표 (")에 대한 코드 작은 따옴표 (')를 사용하면 문제가 해결됩니다.

0

JSON 구문 (큰 따옴표가 아닌 큰 따옴표가 필요함)을 제외하고 모든 것이 정확합니다. 다음은 JSON 문자열/개체를 확인하는 훌륭한 사이트입니다. 문제의 원인은 다음과 같습니다.

http://jsonformatter.curiousconcept.com/

관련 문제