1
我得到JSON從每個請求的API數據,但我不知道如何解析它。這種JSON格式中的某些字段將始終存在,而其他字段則可以互換。請參閱下面的示例進行說明。適當和有效的方式來解析「嵌套」 JSON對象
$json1 = '{
"update_id": 12345,
"message": {
"message_id": 12,
"from": {
"id": 12345,
"first_name": "Foo",
"last_name": "Foo",
"username": "foo"
},
"chat": {
"id": 12345,
"first_name": "Foo",
"last_name": "Foo",
"username": "foo"
},
"date": 1440592506,
"text": "dummy"
}
}';
$json2 = '{
"update_id": 12345,
"message": {
"message_id": 13,
"from": {
"id": 12345,
"first_name": "Foo",
"last_name": "Foo",
"username": "foo"
},
"chat": {
"id": 12345,
"first_name": "Foo",
"last_name": "Foo",
"username": "foo"
},
"date": 1440619228,
"sticker": {
"width": 510,
"height": 512,
"thumb": {
"file_id": "dasdsdasd",
"file_size": 6204,
"width": 127,
"height": 128
},
"file_id": "adasds",
"file_size": 39518
}
}
}';
正如你看到的消息對象中的字段,如MESSAGE_ID,從和聊天是相同的,而最後一個可能是一些爲文本,貼紙,照片,音頻和等(各這是分開的類,我需要給出的消息obj的字段來創建對象和初始化它的屬性ECT)。除此之外,可能還有一些額外的(可選)字段。這就是爲什麼我不能用下面的辦法解析:
$json_decoded = json_decode($json);
$updateID = $json_decoded->update_id;
$messageObject = $json_decoded->message;
$messageID = $messageObject->message_id;
$fromUserObject = $messageObject->from;
$date = $messageObject->date;
$chatObject = $messageObject->chat;
$userID = $fromUserObject->id;
$userFirstName = $fromUserObject->first_name;
$userLastName = $fromUserObject->last_name;
$userName = $fromUserObject->username;
我見過一些例子,人們使用foreach循環來分析整個數據,但我沒有發現它適用於這種情況(或者我只是不能應用這種方法)。
我真的很感激,對解析這些數據的方式您的建議和指導。
的情況下,如果你想檢查的屬性存在,你可以使用這個恰當命名的函數http://php.net/manual/en/function.property-exists.php – rjdown
你告訴我們你的問題,但不是你實際想要達到的目標。喜歡詳細說明一下? – RiggsFolly
爲了解決我列出的問題,比如解析這類對象的最佳實踐以及如何找到對象的長度。 @RiggsFolly抱歉,如果還不夠清楚,我只是認爲標題澄清了我想要達到的目標,我會再次通讀這篇文章並試圖闡述。歡呼聲指出 – fiz