《圖解 TCP/IP 網路通訊協定》筆記

最近買了 圖解 TCP/IP 網路通訊協定 (涵蓋IPv6) 來重新學習網路的相關知識,這本書真的不錯。雖然這本書是用由下至上(Bottom-up)的方式介紹網路,但讀完之後個人認為這樣的安排也很不錯。

看完之後我認為這本書是很營養的,因為除了網路的基本知識,它也介紹了與網路安全有關的機制。

Read More »

有如JSON Selector的JMESPath

前陣子在看AWS文件的時候意外發現這個神奇的工具,它可以降低你從JSON中取出資料的程式碼的複雜度,同時降低了維護的成本。

要我說的話,它應該成為parse JSON的標配。具體來說,它是一種可以用來從JSON中取得指定結構的查詢語言,正如它官網自己所說的:

JMESPath is a query language for JSON.

案例-從ElasticSearch API取出結構化資料

比如說ElasticSearch的Date Histogram Aggregation API會回傳一個JSON:

我想使用下面的PHP程式碼

把它轉成下列這個格式的陣列:

有經驗的人應該很清楚, 當遇到複雜的JSON、而且要取出更多資料的時候, 上面這段程式碼的複雜度會急速飆高,而且難以維護。

如果使用JMESPath, 你可以透過下列的語法得到一樣的結果:

aggregations.sales_over_time.buckets[*].{key: key_as_string, value: doc_count}

在官網實驗JmesPath

如果你有興趣,可以到JMESPath官網,貼上更複雜的JSON,自己動手玩。比如說把上面這案例貼上去……