>  기사  >  백엔드 개발  >  PHP 백엔드는 Android와의 json 상호작용을 구현합니다.

PHP 백엔드는 Android와의 json 상호작용을 구현합니다.

小云云
小云云원래의
2018-02-26 13:20:581907검색

주변 친구들 중에 그 블로그에 있는 코드를 사용하면 다음 코드에서 오류가 발생한다고 보고하고, builder.toString()을 json 객체로 변환할 수 없다는 오류가 발생한다고 하더군요. <br>

	JSONObject jsonObject   = new JSONObject(builder.toString());

<br>그리고 제가 직접 해봤는데 이상이 없었습니다. 그래서 친구들이 만든 PHP 서버 코드를 몇 가지 점검해 본 결과, 마침내 문제를 발견했습니다. 그래서 같은 수렁에 빠진 ​​대다수의 학생들에게 도움이 되길 바라면서 적어봤습니다

이것은 PHP의 json_decode 기능과 관련되어 있는데, 이것이 제 친구들이 오류를 범하는 이유입니다.

이제 성공적으로 테스트한 코드를 작성합니다. Android에서 PHP 서버로 보낸 것은 jsonObject, {"name": "lala"}이고 해당 엔터티 이름은 "userJson"입니다. 다음 코드

	JSONObject jo = new JSONObject();
        jo.put("name", "test");
 
params.add(new BasicNameValuePair("userJson",jo.toString() ));

이때 내 서버측 코드는

<?php  
    	$json_string = $_POST ["userJson"];  
	$user = json_decode($json_string,true);//这里的true加上就会将android发来的json字符串转化为关联数组
  	$arr = array(  
        &#39;user_id&#39; => $user["name"]
        );  
	$str = json_encode($arr);  
    	echo($str);  
?>

이때 JSONObject로 변환할 수 없는 오류는 Android에서 보고되지 않습니다. 물론 JSONArray를 보낼 수도 있습니다. 서버 측의 서버. 즉, [{"name":"lalala"},{}]

이 경우 위 PHP 코드는 마지막 문장까지 제대로 실행되지 않습니다. 이때 코드를

<?php  
    	$json_string = $_POST ["userJson"];  
	$user = json_decode($json_string,true);//这里的true加上就会将android发来的json字符串转化为关联数组
  	$arr = array(  
        'user_id' => $user[0]["name"]
        );  
	$str = json_encode($arr);  
    	echo($str);  
?>
로 수정해야 합니다.

왜 이렇게 수정해야 할까요? 그 이유는 실제로 매우 간단합니다. json_decode 함수에 true를 추가하면 수신된 $json_string이 연관 배열로 변환됩니다. 예를 들어 첫 번째 예에서는 jsonObject가

array(1){	["name"]=>String("test")	}

로 변환되므로 $user["name"]을 사용하여 "test" 문자열을 읽을 수 있으며 두 번째 예에서는 변환 결과는 다음과 같습니다.

array(2){
	[0]=>array(1){			["name"]=>String("lala")			}	[1]=>array(0){}
	}
<br>

이때 $user["name"]을 사용하면 오류가 발생하며 "lala"의 문자열을 읽으려면 $user[0]["name"]을 사용해야 합니다

관련 권장 사항:

당 컨트롤러 메서드의 반환 값은 json과 상호 작용하는 방법이 간단합니다. <br>

jQuery와 PHP 간의 JSON 상호 작용, 2차원 배열을 피하는 방법

PHP와 html 간의 간단한 json 상호 작용 예

위 내용은 PHP 백엔드는 Android와의 json 상호작용을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.