مستندات قانونی JSON Patch درین پیوند قرار داراهستند: http://jsonpatch.com/، ولی طراحی سایت در مشهد ما مقداری مسائل را گشوده میکنیم تا ببینیم در #ASP/C به چه شکل عمل مینماید. دراین نوشته ی علمی ما همت JSON Patch در ASP.net Core را به صورت سریع ذکر خوا هیم کرد.
در تک تک نمونهها، درخواستهای JSON Patch را برای رایاپارس یک شیء نوشتهایم، ahrefs به این ترتیب در C# داریم:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List Friends { get; set; }
}
همگی درخواستهای Patch ساختار مشابهی را دنبال مینمایند. این لیستی از عملیات در یک آرایه میباشد. این عملیات دارنده سه خصوصیت میباشند:
“op”: نوع عملیاتی که می خواهید اجرا دهید را تعریفوتمجید مینماید. از جمله اضافه کردن، جایگزینی، آزمایش و غیره
“path”: مسیر خصوصیتهای شیءای که میخواهید دستکاری نمائید را نشانه میدهد. در نمونه بالا، در شرایطیکه بخواهیم "FirstName" را دستکاری کنیم، خصوصیت path مانند "firstname/" شود.
“value”: در بیشتر قسمتها، کمی میباشد که میخواهید باطن عملیات استعمال فرمایید.
در حال حاضر اذن دهید به هر کدام از عملیاتها نگاهی بیندازیم.
Add
عملیات Add به صورت معمول بدان معناست که یک خصوصیت را به یک شیء یا این که یک گزینه را به یک آرایه بیفزاید. تا قبل از این این فعالیت در #C اجرا نمیشد. چون سیشارپ یک گویش strongly-typed میباشد و شما نمیتوانید یک خصوصیت را به شیءای که تا قبل از این در حین کامپایل تعریف و تمجید نشده میباشد اضافه فرمائید.
برای اضافه کردن یک گزینه در آرایه، درخواست به طور ذیل هست:
{ "op": "add", "path": "/Friends/1", "value": "Mike" }
این عملیات قادر است مقدار "Mike" را در ایندکس 1 آرایهFriendsقرار دهد. همینطور می توانید از کاراکتر "-" برای قرار دادن یک رکورد در انتهای آرایه به کارگیری نمائید.
{ "op": "add", "path": "/Friends/-", "value": "Mike" }
Remove
همچون عملیات "Add" که در صدر بیان شد، عملیات Remove معمولا یک خصوصیت از یک شیء یا این که آیتمی از یک آرایه را حذف مینماید. چون در واقعیت شما در سیشارپ نمیتوانید یک خصوصیت را از یک شیء حذف نمائید، و عملی که حادثه میفتد این میباشد که مقدار را روی پیشفرض (T) تهیه و تنظیم مینماید. در برخی مواقع در صورتیکه شیء (یا این که نوع مرجع) بتواند خالی باشد (nullable)، روی NULL تهیه گردد. البته مراقب باشید وقتی که نوع مقدار را مشخص و معلوم میکنید، برای مثال int، در واقع مقدار روی 0 ریست میگردد.
برای اجرای Removeروی خصوصیت شیء جهت ریست کردن"reset"آن، میتوانید دستورها تحت را جاری ساختن نمائید:
{ "op": "remove", "path": "/FirstName"}
همینطور می توانید عملیاتRemoveرا برای حذف یک گزینه خاص در آرایه اعمال نمائید:
{ "op": "remove", "path": "/Friends/1" }
این فرمان گزینه را از ایندکس 1 آرایه حذف مینماید. در اینجا شرط " where" برای حذف یا این که تمیز کردن نیست، براین اساس این کار در موردها قادر است بسیار خطرناک باشد. در حالتی که آرایه آن گاه که ما آن را از سرور واکشی کردیم تغییرو تحول نماید چه میگردد؟ در واقع یک عملیات JSON Patch وجود دارااست که بهاین عمل یاری خواهد کرد، که بعدا درباره آن بیشتر توضیح خوا هیم اعطا کرد.
Replace
این عملیات قادر است هر پاره ای را به مکان مقدار دیگری جایگزین نماید و قادر است بر روی خصوصیتهای بی آلایش اشیا فعالیت نماید:
{ "op": "replace", "path": "/FirstName", "value": "Jim" }
همینطور قادر است مقدار خاصی را درون یک عنصر آرایه جایگزین نماید:
{ "op": "replace", "path": "/Friends/1", "value": "Bob" }
همینطور قادر است مجموع مقادیر اشیا/آرایهها را جایگزین نماید:
{ "op": "replace", "path": "/Friends", "value": ["Bob", "Bill"] }
Copy
نسخه برداری یک مقدار را از مسیری به مسیری دیگر جابجایی میدهد، که قادر است خصوصیت، شیء، آرایه و غیره باشد. در نمونه تحت، مقدار Firstname را به LastName منتقل میکنیم. شما به مکان اسکن یک جایگزینی بی آلایش روی خصوصیتها را می بینید، ولی این شغل قابلیت و امکانپذیر میباشد! در شرایطی که حقیقتا کد سورس اجرای ASP.net Core بوسیله JSON Patch را تحقیق فرمائید، می بینید که عملیات اسکن، عملیات اضافه کردن را در پسقضیه خویش روی هر مسیری اجرا میدهد.
{ "op": "copy", "from": "/FirstName", "path" : "/LastName" }