Heim >Backend-Entwicklung >PHP-Problem >So verarbeiten Sie JSON-Daten in PHP

So verarbeiten Sie JSON-Daten in PHP

PHPz
PHPzOriginal
2023-04-12 09:20:48971Durchsuche

Json in PHP ist für einige erfahrene Entwickler normalerweise eine sehr häufige Sache. Bei der Verarbeitung von JSON-Daten in PHP müssen Sie häufig einige Vorgänge für Arrays verwenden, beispielsweise die Verarbeitung von Schlüssel-Wert-Paaren. Manchmal stoßen wir jedoch auf eine solche Situation: Wir verarbeiten eine Nicht-Array-Struktur von JSON-Daten. Wie geben wir also den Schlüssel an?

Schauen wir uns zunächst einige Grundlagen der Verarbeitung von JSON-Daten in PHP an.

Die Verarbeitung von JSON in PHP ist normalerweise in zwei Richtungen unterteilt: Konvertieren von PHP-Arrays in JSON-Strings und Konvertieren von JSON-Strings in PHP-Arrays.

Werfen wir zunächst einen Blick auf die Konvertierung von Array in JSON. In PHP gibt es eine sehr nützliche Funktion json_encode, die ein PHP-Array in einen String im JSON-Format konvertieren kann. json_encode 可以把一个PHP数组转化为json格式的字符串。

例如,假设我们有如下数组:

$arr = array("name" => "Tom", "age" => 28, "gender" => "male");

如果我们想将这个数组转化为json,可以这样写:

$jsonStr = json_encode($arr);
echo $jsonStr;

输出结果:

{"name":"Tom","age":28,"gender":"male"}

这里可以看到,原本的PHP数组已经成功地被转化为了一个json格式的字符串。同时,也可以看到,JSON数据是一种键值对的结构。

接下来,我们再看一下json转数组的情况。在PHP中,有一个非常好用的函数 json_decode 可以把一个json格式的字符串转化为PHP数组。

例如,假设我们有如下json数据(假设我们将上一个例子中生成的json字符串存到文件data.json中):

{"name":"Tom","age":28,"gender":"male"}

如果我们想读取这个json数据并转化为PHP数组,可以这样写:

$jsonStr = file_get_contents("data.json");
$arr = json_decode($jsonStr, true);
var_dump($arr);

输出结果:

array(3) {
    ["name"] => string(3) "Tom"
    ["age"] => int(28)
    ["gender"] => string(4) "male"
}

可以看到,原来的json格式的字符串已经成功地转化为了PHP数组。

进一步说,如果我们只需要取出其中某一个值,通常我们会使用类似以下的方式,使用数组的key来取出对应的value:

echo $arr['name']; // 输出 Tom

但是,我们回到最开始提出的问题:假设我们读取到的json数据结构如下:

{
    "status":1,
    "data":{
        "name":"Tom",
        "age":28,
        "gender":"male"
    }
}

这时,如果我们想取出其中的 name 值,会怎么做呢?

通常,我们会想到以下的代码:

$jsonStr = file_get_contents("data.json");
$arr = json_decode($jsonStr, true);
echo $arr['data']['name'];

但是,这样的代码会出现一个Notice错误:

Notice:  Undefined index: data in ...

这是因为PHP认为 $arr 是一个数组,但是我们却试图像处理JSON数据中的数组一样去访问 data,这时它会被识别为一个字符串而不是数组。

为了解决这个问题,我们需要使用 $arr->data->name 的方式指定key:

$jsonStr = file_get_contents("data.json");
$obj = json_decode($jsonStr);
echo $obj->data->name;

这样就可以正确输出:Tom。这里,注意我们创建的对象是 stdClass 类型的,而不是数组类型,所以我们需要使用 $obj->data->name

Angenommen, wir haben zum Beispiel das folgende Array:

rrreee

Wenn wir dieses Array in JSON konvertieren möchten, können wir so schreiben:🎜rrreee🎜Ausgabeergebnis:🎜rrreee🎜Wie Sie hier sehen können, das ursprüngliche PHP-Array wurde erfolgreich in eine Zeichenfolge im JSON-Format konvertiert. Gleichzeitig können Sie auch erkennen, dass es sich bei JSON-Daten um eine Schlüssel-Wert-Paarstruktur handelt. 🎜🎜Als nächstes werfen wir einen Blick auf die Konvertierung von JSON in Array. In PHP gibt es eine sehr nützliche Funktion json_decode, die eine Zeichenfolge im JSON-Format in ein PHP-Array konvertieren kann. 🎜🎜Angenommen, wir haben die folgenden JSON-Daten (vorausgesetzt, wir speichern die im vorherigen Beispiel generierte JSON-Zeichenfolge in der Datei data.json): 🎜rrreee🎜Wenn wir diese JSON-Daten lesen möchten Und konvertieren Sie es in ein PHP-Array. Sie können es so schreiben: 🎜rrreee🎜Ausgabeergebnis: 🎜rrreee🎜Sie können sehen, dass die ursprüngliche JSON-Formatzeichenfolge erfolgreich in ein PHP-Array konvertiert wurde. 🎜🎜Wenn wir außerdem nur einen der Werte abrufen müssen, verwenden wir normalerweise eine Methode ähnlich der folgenden, um den entsprechenden Wert mithilfe des Schlüssels des Arrays abzurufen: 🎜rrreee🎜Kehren wir jedoch zur ursprünglichen Frage zurück: Angenommen Wir lesen die JSON-Datenstruktur wie folgt: 🎜rrreee🎜Was werden wir zu diesem Zeitpunkt tun, wenn wir den Wert name herausnehmen möchten? 🎜🎜Normalerweise denken wir an den folgenden Code: 🎜rrreee🎜 Ein solcher Code führt jedoch zu einem Hinweisfehler: 🎜
Hinweis: Undefinierter Index: Daten in ...
🎜Das liegt daran, dass PHP denkt dass $arr ein Array ist, aber wenn wir versuchen, auf Daten wie auf ein Array in JSON-Daten zuzugreifen, wird es als String und nicht als Array erkannt. 🎜🎜Um dieses Problem zu lösen, müssen wir $arr->data->name verwenden, um den Schlüssel anzugeben: 🎜rrreee🎜Auf diese Weise können wir Folgendes korrekt ausgeben: Tom. Beachten Sie hier, dass das von uns erstellte Objekt vom Typ stdClass und nicht vom Array-Typ ist. Daher müssen wir $obj->data->name verwenden, um es anzugeben Schlüssel . 🎜🎜Zusammenfassend lässt sich sagen, dass wir bei der Verarbeitung von JSON-Daten mit Nicht-Array-Struktur Objekte anstelle von Arrays verwenden müssen. Gleichzeitig können wir diese Methode auch zum Durchlaufen nicht-arraystrukturierter JSON-Daten verwenden. 🎜

Das obige ist der detaillierte Inhalt vonSo verarbeiten Sie JSON-Daten in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn