json_encode(...)可以用数组返回false吗?

时间:2015-08-22 06:21:07

标签: php phpunit

我正在编写一些phpunit测试来检查我写的自定义json类。

我有一些我想测试的代码......

...
$contents = json_encode( $data );
if( false === $contents )
{
  ...
}
...

但如果' $ data'是一个它永远不会返回false的数组,即使我传递了一些无效参数,结果也是

{null:null} 

如何在传递数组时测试encode_json(...)返回false?

1 个答案:

答案 0 :(得分:2)

查看json_last_error()https://secure.php.net/manual/en/function.json-last-error.php

的PHP文档

它有一个导致json_encode()失败的示例,我在此修改了它以使用数组进行演示:

<?php
// An invalid UTF8 sequence
$text = ["text" => "\xB1\x31"];

$json  = json_encode($text);
$error = json_last_error();

var_dump($json, $error === JSON_ERROR_UTF8);
?>

运行此操作时,我得到此预期结果,表示json_encode错误:

$ php php-test.php 
bool(false)
bool(true)