Skip to main content

PHP

 How to validate JSON data in php 8.2 (earlier than PHP 8.3)?

Challenge: 

    If JSON is valid PHP will return associated array or std object against running json_decode($data) function. But, when receive invalid JSON it won't return associated array or std php object. So, i couldn't retrieve data from received string.

Perplexity suggestion: 

 1. First option


    if ($data === '' || ($decoded = json_decode($data, false)) === null && json_last_error() !== JSON_ERROR_NONE) {
    	echo "Invalid JSON";
    }
   

2. Second option


   try {
   	$decoded = json_decode($data, false, 512, JSON_THROW_ON_ERROR);
   } catch (JsonException $e) {
	echo "error messege".$e->getMessage();
   }
   

3. Third option 


function isValidJson(string $data): bool { json_decode($data); return json_last_error() === JSON_ERROR_NONE; }
 

These three option not worked. Means first option not returned "Invalid JSON"and second option not throw error.like that third option also not return false. After few time, i realized if json is invalid json_decode($JSON); functionreturn only string so i just check what is the return value data type and responded client to invalid json (4XX) error.

Comments

Popular posts from this blog

PHP can run AI models - no need Python

 Objective:     Run AI models only using php. Now this is possible with  https://github.com/CodeWithKyrian/transformers-php  this library. I have tried object detection and question answering using this library. Technology:       1.  PHP 8.2 Initialization:     Guide -  https://transformers.codewithkyrian.com/getting-started 1. Initialize project by composer init cmd. 2. Install transformer library by  composer require codewithkyrian/transformers cmd. 3. Enable ffi extention in php.ini       extension = ffi      ffi.enable = true 4. Enable opcache      opcache.jit = tracing 5. Increase memory limit      memory_limit = 512M I. Object detection: ( https://transformers.codewithkyrian.com/object-detection )     Object detection can improve web application perspective . Example:  Retail applications can speed up checkout by automatically recognizing ...

Don't assign value to reference variable.

Objective:          I just tried to create linked list in php.  Challenges:     In php array is sufficient for most data types (simple array, multi-dimensional array and key-value associative array). But, i just tried using  stdClass Object ( pre-defined interfaces and class ). Here, I created one stdClass with reference key and it reference to another class up to final and that final class  reference key is null. Here I used reference key as reference variable. Once i started assigning reference value to this key it assigning new value to it and old one erased. $a = new stdClass(); $a->name = "Trial"; $a->ref = null; for($i=1;$i <= 10;$i++){  $b = new stdClass();  $b->name = 'Demo mj '.$i;  $b->ref = null;  if($a->ref === null ){   $a->ref = &$b;  }else{   $current = $a->ref;   wh...

bootstrap-popper not allowing html table

  Objective :       Creating popover with html using bootstrap-popover.js Technology:  Bootstrap version - 4.6.1 Popper - 1.16.1 Jquery - 3.5.1 Challenge:     1. basic syntax for popover <button type= "button" class= "btn btn-lg btn-success" data-toggle= "popover" title= "Popover title" data-content= "And here's some amazing content. It's very engaging. Right?" > Click to toggle popover </button>      $ ( function () {           $ ( '[data-toggle="popover"]' ). popover ();      });    2. Put html to that popover syntax <button type= "button" class= "btn btn-lg btn-success" data-toggle= "popover" title= "Popover title" data-content= "And here's some amazing content. It's very engaging. Right?" > Click to toggle popover </button>      $(function () { $('button[data-toggle="popover"]').popover(...