Maison  >  Article  >  développement back-end  >  Comment convertir un tableau php en json et supprimer les guillemets doubles

Comment convertir un tableau php en json et supprimer les guillemets doubles

PHPz
PHPzoriginal
2023-04-27 09:06:341306parcourir

En PHP, la conversion d'un tableau au format JSON peut être réalisée via la fonction json_encode. Cette fonction accepte un paramètre $value et le convertit en chaîne au format JSON. Cependant, par défaut, la fonction json_encode encapsulera le nom de l'attribut de l'objet entre guillemets doubles lors de la génération d'une chaîne JSON, ce qui affectera l'utilisation de certains frameworks front-end. Alors, comment faire en sorte que la fonction json_encode supprime les guillemets doubles dans la chaîne JSON générée ? json_encode 函数实现,这个函数接受一个参数 $value,将其转换为 JSON 格式的字符串。但是,在默认情况下,json_encode 函数在生成 JSON 字符串时会将对象的属性名用双引号包裹起来,这会影响一些前端框架的使用。那么,如何让 json_encode 函数去掉生成的 JSON 字符串中的双引号呢?

首先,我们来看一下 json_encode 函数默认生成的 JSON 字符串格式:

$arr = array('name' => '张三', 'age' => 18, 'gender' => 'male');
$jsonStr = json_encode($arr);
echo $jsonStr;

上述代码的输出结果为:

{"name":"张三","age":18,"gender":"male"}

可以看到,JSON 字符串中的属性名都用双引号包裹起来了。

如果我们想去掉双引号,可以使用 PHP 的反射机制。如果读者不熟悉反射,可以在阅读本篇文章后再进行学习。

下面是一个实现将 JSON 字符串中的属性名去掉双引号的例子:

class JsonWithoutQuotes {
    public function __construct($data) {
        $this->originalData = $data;
    }
  
    public function getJson() {
        $data = $this->originalData;
        $jsonData = json_encode($data);
        $jsonData = preg_replace_callback(
            '/"(.*?)":/is', 
            function($matches) { 
                $match = $matches[1];
                return is_string($match) ? $match.":" : $match; 
            },
            $jsonData);
            
        return $jsonData;
    }
}

上面的代码中,我们使用了一个自定义的类 JsonWithoutQuotes,它接收一个数组作为参数并将其保存在 $originalData 属性中。getJson 方法用于将 $originalData 中的数组转换成不包含双引号的 JSON 字符串:

首先,我们调用 json_encode 函数将原始数据转换为 JSON 字符串,然后使用 PHP 内置的正则表达式引擎 preg_replace_callback 方法将 JSON 字符串中的属性名用回调函数中返回的字符串替代。回调函数的作用是判断一个匹配到的字符串是否为字符串类型,如果是,就返回不包含双引号的字符串,如果不是,则原样返回该字符串。

$arr = array('name' => '张三', 'age' => 18, 'gender' => 'male');
$jsonStr = (new JsonWithoutQuotes($arr))->getJson();
echo $jsonStr;

实际运行效果:

{name:"张三",age:18,gender:"male"}

可以看到,现在 JSON 字符串中的属性名已经去除了双引号。

总结:

使用 PHP 自带的 json_encode

Tout d'abord, jetons un œil au format de chaîne JSON généré par la fonction json_encode par défaut : 🎜rrreee🎜Le résultat de sortie du code ci-dessus est : 🎜rrreee🎜Comme vous pouvez le voir, l'attribut les noms dans la chaîne JSON sont tous entourés de guillemets doubles. 🎜🎜Si nous voulons supprimer les guillemets doubles, nous pouvons utiliser le mécanisme de réflexion de PHP. Si le lecteur n'est pas familier avec la réflexion, vous pourrez en apprendre davantage après avoir lu cet article. 🎜🎜Ce qui suit est un exemple de suppression des guillemets doubles des noms d'attributs dans une chaîne JSON : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons une classe personnalisée JsonWithoutQuotes, qui reçoit un tableau en tant que paramètres et les enregistre dans l'attribut $originalData. La méthode getJson est utilisée pour convertir le tableau dans $originalData en une chaîne JSON sans guillemets doubles : 🎜🎜Tout d'abord, nous appelons la fonction json_encode Convertissez les données d'origine en chaîne JSON, puis utilisez la méthode preg_replace_callback du moteur d'expression régulière intégré de PHP pour remplacer le nom de l'attribut dans la chaîne JSON par la chaîne renvoyée dans la fonction de rappel. La fonction de la fonction de rappel est de déterminer si une chaîne correspondante est de type chaîne. Si tel est le cas, renvoyez la chaîne sans guillemets doubles. Sinon, renvoyez la chaîne telle quelle. 🎜rrreee🎜Effet d'exécution réel : 🎜rrreee🎜Vous pouvez voir que les guillemets doubles ont été supprimés des noms d'attribut dans la chaîne JSON. 🎜🎜Résumé : 🎜🎜Il est très pratique d'utiliser la fonction json_encode fournie avec PHP pour convertir un tableau en chaîne JSON. Cependant, dans certains cas, les noms de propriétés dans les chaînes JSON doivent être supprimés des guillemets doubles. À l’heure actuelle, nous pouvons utiliser le mécanisme de réflexion PHP pour atteindre cet objectif. 🎜

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