Maison >développement back-end >Problème PHP >Comment convertir un tableau vide en objet json en php

Comment convertir un tableau vide en objet json en php

藏色散人
藏色散人original
2021-04-02 09:45:223059parcourir

Comment convertir un tableau vide en PHP en objet json : 1. Utilisez "JSON_FORCE_OBJECT" pour convertir un tableau vide en objet json ; 2. Utilisez la conversion de type de données pour convertir un tableau vide en objet json ; ; 3. Utilisez ArrayObject pour convertir un tableau vide en objet json.

Comment convertir un tableau vide en objet json en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

PHP json_encode convertit les tableaux vides dans des objets

Description du problème :

php fournit des interfaces sur le client, telles que PC, Android, iOS, etc. Si des données au format json sont renvoyées , lorsque les données renvoyées sont un tableau et que la clé est une chaîne, jsonObject sera renvoyé après la jsonisation. Cependant, s'il s'agit d'un tableau vide, jsonArray peut être renvoyé. Une incohérence dans la structure des données entraîne l'échec de l'analyse de json.

Par exemple :

$arr  = [
     'id'  => 123.,
     'name'  =>  'andrew' ,
];
 
$jsonRet  = json_encode( $arr );
 
print_r( $jsonRet );

Sortie :

{
  "id": 123,
  "name": "andrew"
}

Mais si c'est :

$arr = [];
$jsonRet = json_encode($arr);
print_r($jsonRet);

Sortie :

[
  
]

Comment faire lorsque le tableau est vide, est-ce aussi JsonObject ?

Méthode 1 :

Utiliser JSON_FORCE_OBJECT

$arr = [];
$jsonRet = json_encode($arr, JSON_FORCE_OBJECT);
print_r($jsonRet);

Cette méthode a un inconvénient, par exemple :

$arr = [
    'jsonArray' => [
        '21', '12', '13'
    ],
    'jsonObject' => []
];
$jsonRet = json_encode($arr,JSON_FORCE_OBJECT);
print_r($jsonRet);

Sortie :

{
  "jsonArray": {
    "0": "21",
    "1": "12",
    "2": "13"
  },
  "jsonObject": {
    
  }
}

Le jsonArray original a également été jsonObjectized, et les changements locaux ne peuvent pas affecter la

Méthode 2

Utiliser la conversion de type de données

$bar = array();  
$foo = (object)$bar;  
echo json_encode($foo);

Troisième méthode (recommandée)

Utiliser ArrayObject

$arr = [
    'jsonArray' => [
        '21', '12', '13'
    ],
    'jsonObject' => new \ArrayObject()
];
$jsonRet = json_encode($arr);
print_r($jsonRet);

Sortie :

{
  "jsonArray": [
    "21",
    "12",
    "13"
  ],
  "jsonObject": {
    
  }
}

[Apprentissage recommandé : Tutoriel vidéo PHP]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn