【问题标题】:Json_encode is not working for null valueJson_encode 不适用于空值
【发布时间】:2017-08-11 11:53:49
【问题描述】:

我需要什么

  • 我需要将数组转换为 json。

数组o/p

 Array
( 
[ID] => 70
[MM_USER_PROFILE_ID] => 1
[FOS_USER_ID] => 84
[TYPE] => ALERT
[FILE_ID] => 157
[PRIORITY] => Medium
[TITLE] => test csv
[DESCRIPTION] => Resource id #390
[IS_ACTIVE] => Y
[CREATED_AT] => 2017-03-15 11:24:28
[UPDATED_AT] => 
[CREATED_BY] => 84
[UPDATED_BY] => 
[LEVEL_ID] => 
[USER_ID] => 84
[LOG_ID] => 
)

php代码

   $temp = array();

    $selectQ = "SELECT COUNT(*) as  new_if_count  ";
    $total_count = $this->container->get('db_core_function_services')->runRawSql($selectQ);


    foreach($notification_result as $key =>$value)
    {
      //solution 1 i tried json_encode
        $temp['all_notifications']=json_encode($value);
    }


  print_r($tmp)  o/p false.

  //solution 2 i tried
    $encoders = array(new JsonEncoder());
    $normalizers = array(new GetSetMethodNormalizer());
    $serializer = new Serializer($normalizers, $encoders);

    $response = new Response($serializer->serialize($temp, 'json'));
    $response->headers->set('Content-Type', 'application/json');
    return $response;
  • 请提出解决方案,我该如何编码这个数组。

错误

 An unexpected value could not be normalized: NULL
  • 正如我用谷歌搜索的那样,我遇到的问题是从数组中解析空值。

  • 请提出建议

我发现 ['description'] 的解决方案是造成问题的 blob 内容。

适合我的代码

   foreach($notification_result as $key =>$value)
    {
        if(array_key_exists('DESCRIPTION', $value)){
            $blob =  $value['DESCRIPTION'];
            $value['DESCRIPTION'] = stream_get_contents($blob);
        }
        $temp['all_notifications']=$value;
    }
    $temp_count=$total_count[0];

    $data=array_merge($temp_count,$temp);

【问题讨论】:

    标签: php oracle11g symfony-2.8


    【解决方案1】:
    foreach($notification_result as $key =>$value) {
          //solution 1 i tried json_encode
    //if (!empty($value)) //uncomment if need cut empty variables
            $array .= $temp['all_notifications'] = array($key =>$value);
        }    
    $json = json_encode ($array);
        echo $json;
    

    【讨论】:

      【解决方案2】:

      你必须首先初始化一个数组..只需在 foreach 循环之前添加这一行来尝试

      $temp = array();

      【讨论】:

      • 那么首先,将获取的值存储为数组..然后将其转换为JSON..试试foreach($notification_result as $key =>$value) { $temp['all_notifications']=$value; } $json_file = json_encode($temp);
      • 我在那一行写错了..更正$temp['all_notifications'] .= $value;
      猜你喜欢
      • 1970-01-01
      • 2018-10-10
      • 2012-08-20
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 2012-07-29
      • 2014-01-27
      • 2015-05-03
      相关资源
      最近更新 更多