【背景】
折腾:
期间,需要去先处理好返回的JSON字符串:
1 | { "access_token" : "f_FvmMYUVcjEDcy2-qjduh51ffm9h0cqxDBgYVo6JtCBApbtWGnq9GMIsLoh-tVj5R-8Mq-S7ALaxSeY8qzv1tSAGusP8nFq3Eh1Y-1qzkE" , "expires_in" :7200} |
变成对象,以便后续操作。
【折腾过程】
1.搜:
php json process
参考:
How to process JSON in PHP? – Stack Overflow
Parsing JSON file with PHP – Stack Overflow
去试试
试试代码:
1 2 3 4 | $decodedJsonObj = json_decode( $respJson ); var_dump( $decodedJsonObj ); $decodedJsonArr = json_decode( $respJson , true); var_dump( $decodedJsonArr ); |
输出结果是:
1 2 3 4 5 6 7 8 9 10 11 12 | object(stdClass) #2 (2) { [ "access_token" ]=> string(107) "sKTUQsuAw3bd5W79DZTF9xuycUGBZM6sGZzDYETegpq_eHsJedYgiIpREdcaqL-1FSlhn16aWtGxr9Vaj7FJk3z-PjmgRaaFidsv9VHh-50" [ "expires_in" ]=> int(7200) } array(2) { [ "access_token" ]=> string(107) "sKTUQsuAw3bd5W79DZTF9xuycUGBZM6sGZzDYETegpq_eHsJedYgiIpREdcaqL-1FSlhn16aWtGxr9Vaj7FJk3z-PjmgRaaFidsv9VHh-50" [ "expires_in" ]=> int(7200) } |
2.然后去判断json对象中是否包含某个key:access_token
【已解决】PHP中如何判断JSON对象或JSON数组中包含某个key键值
【总结】
正常处理json的方式,其实很简单,就是编码和解码。
此处用到了解码:
1 | $decodedJsonObj = json_decode( $respJson ); |
或:
1 | $decodedJsonArr = json_decode( $respJson , true); |
接着,此处通过去判断是否包含对应键值,知道是否出错:
1 2 3 4 5 6 7 8 9 10 | // $decodedJsonObj = json_decode($respJson); $decodedJsonArr = json_decode( $respJson , true); $crifanLib ->logWrite( "decodedJsonArr=%s" , $decodedJsonArr ); if ( array_key_exists ( "access_token" , $decodedJsonArr )){ $access_token = $decodedJsonArr [ 'access_token' ]; $crifanLib ->logWrite( "access_token=%s" , $access_token ); } else { $crifanLib ->logWrite( "Error while get access token: errcode=%d, errmsg=%s" , $decodedJsonArr [ 'errcode' ], $decodedJsonArr [ 'errmsg' ]); } |
万一json解码出错,也可以通过:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | switch (json_last_error()) { case JSON_ERROR_NONE: echo ' - No errors' ; break ; case JSON_ERROR_DEPTH: echo ' - Maximum stack depth exceeded' ; break ; case JSON_ERROR_STATE_MISMATCH: echo ' - Underflow or the modes mismatch' ; break ; case JSON_ERROR_CTRL_CHAR: echo ' - Unexpected control character found' ; break ; case JSON_ERROR_SYNTAX: echo ' - Syntax error, malformed JSON' ; break ; case JSON_ERROR_UTF8: echo ' - Malformed UTF-8 characters, possibly incorrectly encoded' ; break ; default : echo ' - Unknown error' ; break ; } |
去得知错误原因。
转载请注明:在路上 » 【已解决】PHP中处理JSON字符串