JMESPath یک زبان کوئری برای کار با فرمت JSON است که با کمک آن میتوان به سادگی به جزئیات و ساختار یک عبارت جیسون دسترسی یافت و این در حالی است که با کمک JMESPath، میتوان نتایج کوئری نوشته شده را به صورت زنده مشاهده کرد.
زبان JMESPath در قالب گرامر ABNF (یکی از روشهای توصیف گرامر یک زبان برنامهنویسی) و به همراه فیچرهای کامل یک زبان طراحی شده است. این موضوع تضمین میکند که سینتکس زبان به شکلی دقیق و بینقص، تعریف شده است. از جمله مزایای JMESPath میتوان به موارد زیر اشاره کرد:
عملکرد تضمین شده
برای تست عملکرد این زبان، مجموعه کاملی از تستهای داده-محور موجود است. JMESPath در قالب لایبرریهای متعددی ارائه شده است که دولوپرها میتوانند به دلخواه، هر یک از آنها را در زبان مورد علاقهٔ خود استفاده کنند.
تنوع زبان لایبرریها
برای اینکه عملکرد لایبرریهای JMESPath برای کاربردهای مختلف تضمین شود، لایبرریهای متعددی در زبانهای مختلف از جمله Python ،PHP ،Javascript و Lua ارائه شده است که بر روی هر یک از آنها تستهای کاملی انجام شده است.
برای روشنتر شدن کاربرد این زبان، دیتای جیسون زیر را مد نظر قرار میدهیم:
{
"locations": [
{"name": "Seattle", "state": "WA"},
{"name": "New York", "state": "NY"},
{"name": "Bellevue", "state": "WA"},
{"name": "Olympia", "state": "WA"}
]
}
حال کوئری زیر را اجرا میکنیم:
locations[?state == 'WA'].name | sort(@) | {WashingtonCities: join(', ', @)}
به عنوان نتیجه داریم:
{
"WashingtonCities": "Bellevue, Olympia, Seattle"
}
میبینیم که به چه سادگی با استفاده از زبان JMESPath قادر به فیلتر کردن دیتا هستیم.