جیسون encoding/json
ساختن و خواندن جیسون: از رشتهی ساده تا تبدیل خودکار ساختارها و خواندن جریانی.
واردسازی کدگذاری.جیسون
برای کار با جیسون سه راه هست. برای کارهای ساده، تابعهایی مثل عضو، شیء و دریافت مستقیم با متن جیسون کار میکنند. برای برنامههای واقعی، سریال سازی و واسریال سازی یک ساختار سلام را به جیسون و برعکس تبدیل میکنند. برای دادهای که شکلش را از پیش نمیدانید، کدگشایی یک مقدار پویا برمیگرداند.
نام کلید هر فیلد را با @جیسون "name" بالای فیلد تعیین کنید؛ @جیسون "-" فیلد را کنار میگذارد. بدون آن، نام خود فیلد کلید میشود.
این بسته را برای رابطهای برنامهنویسی، پروندههای تنظیمات و هر چیزی که برنامهی دیگری میخواند به کار ببرید. همسایههایش: یامل و تامل برای پروندههایی که آدمها ویرایش میکنند، مسجپک وقتی داده باید کوچک و دودویی باشد، و تبدیل قالب برای خواندن یا نوشتن یک ساختار در چند قالب.
اشتباههای رایج:
دریافت عددیکصحیح۳۲ بیتی برمیگرداند و هر عدد بزرگتر را به سقف میرساند:3000000000به شکل2147483647برمیگردد. برای شناسهها و برچسبهای زمانی، فیلد را باواسریال سازیدر یکصحیح۶۴بخوانید یا متندریافترا تجزیه کنید.دریافت،دریافت عددوداردفقط سطح بالای شیء را نگاه میکنند. برای مقدارهای تودرتودریافت مسیررا به کار ببرید، مثلدریافت مسیر(متن، "user.address.city").- سختگیر یا آسانگیر.
واسریال سازیبا فیلد جاافتاده، کلید ناشناخته یا گونهی ناجور شکست میخورد؛واسریال سازی آسان گیربرای فیلدهای جاافتاده پیشفرض ساختار را نگه میدارد و کلیدهای ناشناخته را رد میکند، ولی گونهی نادرست باز هم خطاست. - ترتیب کلیدها.
سریال سازیفیلدها را به ترتیب ساختار مینویسد، و شیء یکمقدارکدگشاییشده ترتیب متن را نگه میدارد وکدگذاریکلیدها را به همان ترتیب مینویسد؛ اگر خروجی باید الفبایی باشد،چیدن کلیدهارا بهکدگذاریبدهید.
راهنما: بارگذاری پروندهی پیکربندی در یک ساختار
پروندهی پیکربندی رایجترین جیسونی است که یک برنامه میخواند. آن را با ساختارها توصیف کنید، به هر فیلد مقدار پیشفرض دلخواه بدهید و بگذارید واسریال سازی آسان گیر هر چه را پرونده دارد پر کند. شیءهای تودرتو به ساختارهای تودرتو و آرایهها به فیلدهای وکتور نگاشته میشوند.
واردسازی کدگذاری.جیسون
واردسازی کدگذاری.خطای کدگذاری
ساختار پایگاهداده:
@جیسون "host"
همگانی میزبان: رشته = "localhost"
@جیسون "port"
همگانی درگاه: صحیح = ۵۴۳۲
@جیسون "pool"
همگانی استخر: صحیح = ۴
پایان
ساختار پیکربندی:
@جیسون "name"
همگانی نام: رشته = "app"
@جیسون "debug"
همگانی اشکال زدایی: منطقی = نادرست
@جیسون "db"
همگانی پایگاه: پایگاهداده = پایگاهداده {}
@جیسون "admins"
همگانی مدیران: وکتور<رشته> = وکتور {}
پایان
تابع ریشه:
متن := `{
"name": "shop",
"db": {"host": "db.internal", "port": 6432},
"admins": ["sara", "reza"]
}`
ناپایا پیکر := پیکربندی {}
ناپایا خطا := خطای کدگذاری.بدون خطا()
اگر وارونه جیسون.واسریال سازی آسان گیر(متن، پیکر، خطا):
سرچاپ "پیکربندی خراب است:"، خطا.پیام
برگشت ۱
پایان
سرچاپ "نام:"، پیکر.نام
سرچاپ "اشکالزدایی:"، پیکر.اشکال زدایی
سرچاپ "پایگاهداده:"، پیکر.پایگاه.میزبان، پیکر.پایگاه.درگاه، "استخر"، پیکر.پایگاه.استخر
سرچاپ "مدیران:"، پیکر.مدیران.طول()، پیکر.مدیران.بگیر(۰)، پیکر.مدیران.بگیر(۱)
پایانپرونده debug و db.pool را نداشت، پس این دو مقدار پیشفرضشان را نگه داشتند. دلیل استفاده از نسخهی آسانگیر همین است: واسریال سازی ساده سختگیر است و اگر فیلدی نباشد با missing key 'pool' و اگر پرونده کلیدی داشته باشد که ساختار ندارد با unknown key شکست میخورد. سختگیری برای پیامهای میان برنامهها درست است، جایی که نبودن یک فیلد یعنی اشکال؛ آسانگیری برای پروندههایی که آدمها با دست ویرایش میکنند. برای خواندن پرونده از دیسک، متن پرونده.خواندن همه از بستهی پرونده را بدهید.
راهنما: ساختن پاسخ یک API
در جهت دیگر، سریال سازی یک ساختار را به جیسون فشرده برای فرستادن و سریال سازی با تورفتگی به جیسون خوانا برای گزارشها و پروندهها تبدیل میکند. یک وکتور از ساختارها آرایهای از شیءها میشود، نقلقولهای درون رشته گریزانده میشوند و ترتیب فیلدها همان ترتیب ساختار است.
واردسازی کدگذاری.جیسون
ساختار کالا:
@جیسون "sku"
همگانی شناسه: رشته = ""
@جیسون "title"
همگانی عنوان: رشته = ""
@جیسون "price_cents"
همگانی قیمت: صحیح = ۰
@جیسون "in_stock"
همگانی موجود: منطقی = درست
پایان
ساختار صفحهنتایج:
@جیسون "page"
همگانی شماره: صحیح = ۱
@جیسون "total"
همگانی کل: صحیح = ۰
@جیسون "items"
همگانی کالاها: وکتور<کالا> = وکتور {}
@جیسون "-"
همگانی نهان: رشته = ""
پایان
تابع ریشه:
ناپایا ص := صفحهنتایج { شماره = ۲، کل = ۱۴، نهان = "products:2" }
ص.کالاها.بیفزا(کالا { شناسه = "BK-01"، عنوان = "Notebook"، قیمت = ۱۲۵۰ })
ص.کالاها.بیفزا(کالا { شناسه = "PN-07"، عنوان = "Pen \"fine\""، قیمت = ۳۰۰، موجود = نادرست })
سرچاپ جیسون.سریال سازی(ص)
سرچاپ جیسون.سریال سازی با تورفتگی(ص، " ")
پایان@جیسون "price_cents" نام فیلد را در جیسون عوض میکند بیآنکه نامش در کد عوض شود، و @جیسون "-" فیلدهای درونی مثل کلید حافظهی نهان را از خروجی بیرون نگه میدارد. برای گذرواژهها و توکنها هم از آن استفاده کنید تا هرگز ناخواسته در پاسخی نشت نکنند. در برنامههای فارسی، @جیسون راه نگه داشتن کلیدهای انگلیسی با نامهای فارسی فیلدهاست.
راهنما: کاوش جیسونی با شکل ناشناخته
وقتی شکل داده را از پیش نمیدانید، مثلاً وبهوکی از سرویسی دیگر، کدگشایی درختی از گرههای مقدار میدهد. از هر گره بپرسید چیست، با رشته است، صحیح است، شیء است و بقیه، و سپس آن را با تابع «به ...» متناظر بخوانید.
واردسازی کدگذاری.جیسون
واردسازی کدگذاری.مقدار
واردسازی کدگذاری.خطای کدگذاری
واردسازی رشته
تابع شرح(م: مقدار.مقدار): رشته:
اگر مقدار.رشته است(م): برگشت "رشته " + مقدار.به رشته(م) پایان
اگر مقدار.صحیح است(م): برگشت "صحیح " + رشته.از عدد(مقدار.به صحیح(م)) پایان
اگر مقدار.اعشاری است(م): برگشت "اعشاری " + رشته.از اعشار(مقدار.به اعشاری(م)) پایان
اگر مقدار.منطقی است(م):
اگر مقدار.به منطقی(م): برگشت "منطقی درست" پایان
برگشت "منطقی نادرست"
پایان
اگر مقدار.آرایه است(م): برگشت "آرایه با " + رشته.از عدد(مقدار.طول آرایه(م)) + " عضو" پایان
اگر مقدار.شیء است(م): برگشت "شیء با " + رشته.از عدد(مقدار.طول شیء(م)) + " کلید" پایان
برگشت "تهی"
پایان
تابع ریشه:
ناپایا خطا := خطای کدگذاری.بدون خطا()
سند := جیسون.کدگشایی(`{"id": 7, "name": "Lamp", "price": 19.5, "sale": true, "tags": ["home", "light"], "size": {"w": 20, "h": 45}, "note": null}`، خطا)
اگر خطای کدگذاری.خطا است(خطا):
سرچاپ "خطای تجزیه:"، خطا.پیام
برگشت ۱
پایان
سرچاپ "کلیدها:"، مقدار.طول شیء(سند)
کلیدها := ["id"، "name"، "price"، "sale"، "tags"، "size"، "note"، "color"]
هر ک در کلیدها:
اگر وارونه مقدار.شیء دارد(سند، ک):
سرچاپ ک، "وجود ندارد"
گذر
پایان
سرچاپ ک، "="، شرح(مقدار.مقدار کلید(سند، ک))
پایان
اندازه := مقدار.مقدار کلید(سند، "size")
سرچاپ "مساحت:"، مقدار.به صحیح(مقدار.مقدار کلید(اندازه، "w")) * مقدار.به صحیح(مقدار.مقدار کلید(اندازه، "h"))
پایانعددهای صحیح به شکل صحیح و عددهای کسری به شکل اعشاری برمیگردند؛ عدد است هر دو را میپذیرد. شیء کدگشاییشده کلیدهایش را به ترتیب متن نگه میدارد، ولی فرستنده آزاد است آن ترتیب را عوض کند، پس مثل همین برنامه فهرستی از کلیدهای مورد انتظار را بپیمایید و برای کلیدهای اختیاری از شیء دارد استفاده کنید.
راهنما: گزارش ورودی خراب
هر تابع کدگشایی یک خطای کدگذاری از بستهی خطای کدگذاری میگیرد. وقتی شکست بخورد، message میگوید چه اشکالی بوده و position جایگاه بایتی است که خواننده آنجا ایستاده، همان چیزی که به کاربر نشان میدهید. تابعهای متنی مثل دریافت هرگز شکست نمیخورند و برای کلید نبوده رشتهی خالی برمیگردانند، پس هر جا مهم است اول با دارد یا معتبر بررسی کنید.
واردسازی کدگذاری.جیسون
واردسازی کدگذاری.خطای کدگذاری
ساختار ثبتنام:
@جیسون "email"
همگانی رایانامه: رشته = ""
@جیسون "age"
همگانی سن: صحیح = ۰
پایان
تابع بارگذاری(متن: رشته):
ناپایا ث := ثبتنام {}
ناپایا خطا := خطای کدگذاری.بدون خطا()
اگر جیسون.واسریال سازی(متن، ث، خطا):
سرچاپ "درست:"، ث.رایانامه، ث.سن
وگرنه:
سرچاپ "خطا در جایگاه"، خطا.موقعیت، "->"، خطا.پیام
پایان
پایان
تابع بارگذاری آسان گیر(متن: رشته):
ناپایا ث := ثبتنام {}
ناپایا خطا := خطای کدگذاری.بدون خطا()
اگر جیسون.واسریال سازی آسان گیر(متن، ث، خطا):
سرچاپ "آسانگیر درست:"، ث.رایانامه، ث.سن
پایان
پایان
تابع ریشه:
بارگذاری(`{"email": "[email protected]", "age": 31}`)
بارگذاری(`{"email": "[email protected]", "age": "31"}`)
بارگذاری(`{"email": "[email protected]", "age": 31`)
بارگذاری(`{"email": "[email protected]", "age": 31, "plan": "pro"}`)
بارگذاری آسان گیر(`{"email": "[email protected]", "age": 31, "plan": "pro"}`)
سرچاپ "معتبر:"، جیسون.معتبر(`[1, 2, 3]`)، جیسون.معتبر(`[1, 2,]`)
سرچاپ "کلید نبوده [" + جیسون.دریافت(`{"a": 1}`، "b") + "] میدهد"
پایانراهنما: جریان جیسون سطربهسطر
گزارشها و خروجیها اغلب در هر سطر یک مقدار جیسون دارند (NDJSON). کدگشا آنها را یکییکی میخواند: باز هم میگوید مقدار دیگری مانده یا نه و کدگشایی بعدی را برمیگرداند. کدگشای رشته از یک رشته میخواند و کدگشای جدید از یک پروندهی باز. کدگذارها هم همین قالب را مینویسند، در هر سطر یک مقدار.
واردسازی کدگذاری.جیسون
واردسازی کدگذاری.مقدار
تابع ریشه:
گزارشها := `{"level": "info", "msg": "started", "ms": 3}
{"level": "warn", "msg": "slow query", "ms": 820}
{"level": "info", "msg": "request", "ms": 41}
{"level": "error", "msg": "timeout", "ms": 5000}
{"level": "info", "msg": "request", "ms": 37}
`
ناپایا شمارش := نگاشت {} برگردان نگاشت<رشته، صحیح>
ناپایا کند := ۰
ناپایا خواننده := جیسون.کدگشای رشته(گزارشها)
تا خواننده.باز هم():
خط := خواننده.کدگشایی()
سطح := مقدار.به رشته(مقدار.مقدار کلید(خط، "level"))
شمارش.درج(سطح، شمارش.دریافت با پیش فرض(سطح، ۰) + ۱)
اگر مقدار.به صحیح(مقدار.مقدار کلید(خط، "ms")) > ۵۰۰:
کند += ۱
پایان
پایان
سرچاپ "info:"، شمارش.دریافت با پیش فرض("info"، ۰)، "warn:"، شمارش.دریافت با پیش فرض("warn"، ۰)، "error:"، شمارش.دریافت با پیش فرض("error"، ۰)
سرچاپ "کندتر از ۵۰۰ میلیثانیه:"، کند
ناپایا نویسنده := جیسون.کدگذار حافظه()
نویسنده.کدگذاری(مقدار.مقدار رشته("summary"))
نویسنده.کدگذاری(مقدار.مقدار صحیح(کند))
سرچاپ نویسنده.متن()
نویسنده.بستن()
پایانتا خواننده.باز هم(): همانطور خوانده میشود که کار میکند: «تا وقتی باز هم هست»، چون تا در سلام تا وقتی شرطش درست است اجرا میشود.
کدام تابع برای کدام کار
| کار | به کار ببرید |
|---|---|
| خواندن یک فیلد از متن جیسون کوچک | دریافت، دریافت عدد، دریافت مسیر |
| ساختن دستی یک متن جیسون کوچک | عضو، عضو عدد، شیء، آرایه |
| ساختار به جیسون | سریال سازی، سریال سازی با تورفتگی |
| جیسون به ساختار، دقیق | واسریال سازی |
| جیسون به ساختار، با پیشفرضها و کلیدهای اضافه | واسریال سازی آسان گیر |
| شکل ناشناخته | کدگشایی، کدگذاری |
| یک مقدار در هر سطر | کدگشای جدید، کدگذار جدید |
| زیبا کردن یا فشرده کردن متن موجود | تورفتگی، فشرده سازی |
| طرحوارهی جیسون برای یک ساختار | طرحواره |
گونهها
گزینههای جیسون JSONOptions
ساختار گزینههای جیسونکدگذاری.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| تورفتگی | indent | رشته = "" | واحد تورفتگی؛ خالی یعنی یک خط. |
| چیدن کلیدها | sort_keys | منطقی = نادرست | کلیدها به ترتیب الفبا نوشته شوند. بدون آن، کلیدها به ترتیبی نوشته میشوند که شیء نگه داشته است: ترتیب افزوده شدن یا کدگشایی. |
| چشمپوشی از تهی | ignore_null | منطقی = نادرست | کلیدهای با مقدار تهی نوشته نشوند. |
واردسازی کدگذاری.جیسون
واردسازی کدگذاری.مقدار
واردسازی کدگذاری.خطای کدگذاری
واردسازی سیستم پرونده.پرونده
تابع ریشه:
ناپایا خ := خطای کدگذاری.بدون خطا()
م := جیسون.کدگشایی(`{"city": "تهران", "zones": [1, 2, 22]}`، خ)
سرچاپ خطای کدگذاری.خطا است(خ)، مقدار.به رشته(مقدار.مقدار کلید(م، "city"))
سرچاپ جیسون.کدگذاری پیش فرض(م)
گ := جیسون.گزینههای جیسون { تورفتگی = " "، چیدن کلیدها = درست }
سرچاپ جیسون.کدگذاری(م، گ)
_ := جیسون.کدگشایی("[1, 2"، خ)
سرچاپ خطای کدگذاری.خطا است(خ)، خ.موقعیت
ناپایا ک := جیسون.کدگذار حافظه()
ک.کدگذاری(مقدار.مقدار صحیح(۱))
ک.کدگذاری(مقدار.مقدار رشته("دو"))
سرچاپ ک.متن()
ک.بستن()
ناپایا ت := جیسون.کدگذار حافظه با تورفتگی(" ")
ت.کدگذاری(م)
سرچاپ ت.متن()
ت.بستن()
ن := پرونده.بازکردن("lines.ndjson"، "wb")
ناپایا پن := جیسون.کدگذار جدید(ن)
پن.کدگذاری(مقدار.مقدار صحیح(۱۰))
پن.کدگذاری(مقدار.مقدار صحیح(۲۰))
پن.بستن()
ناپایا پت := جیسون.کدگذار جدید با تورفتگی(پرونده.بازکردن("pretty.json"، "wb")، "\t")
پت.کدگذاری(م)
پت.بستن()
ناپایا خوان := جیسون.کدگشای جدید(پرونده.بازکردن("lines.ndjson"، "rb"))
ناپایا جمع := ۰ برگردان صحیح۶۴
تا خوان.باز هم():
جمع += مقدار.به صحیح(خوان.کدگشایی())
پایان
سرچاپ جمع
ناپایا گ۲ := جیسون.کدگشای رشته("{\"a\": 1}\n{\"a\": 2}\n")
تا گ۲.باز هم():
سرچاپ جیسون.کدگذاری پیش فرض(گ۲.کدگشایی())
پایان
پایانکدگذار جیسون JSONEncoder
ساختار کدگذار جیسون| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| مقصد | dst | پرونده* | پروندهی مقصد، اگر در پرونده مینویسد. |
| روی پرونده | useFile | منطقی = نادرست | آیا در پرونده مینویسد یا در حافظه. |
| انبار | buf | رشته.StringBuilder | حافظهی متن، وقتی در حافظه مینویسد. |
| تورفتگی | indent | رشته = "" | واحد تورفتگی؛ خالی یعنی هر مقدار در یک خط. |
| شمار | count | صحیح = 0 | تعداد مقدارهای نوشتهشده. |
نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگذاری Encode
تابع کدگذاری(v: value.Value): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
متن String
تابع متن(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
بستن Close
تابع بستن()نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگشای جیسون JSONDecoder
ساختار کدگشای جیسون| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| منبع | src | پرونده* | پروندهی منبع. |
| روی پرونده | useFile | منطقی = نادرست | آیا از پرونده میخواند. |
| انبار | buf | رشته = "" | متن خواندهشده. |
| جایگاه | pos | صحیح = 0 | جای فعلی در متن. |
| خوانده شده | loaded | منطقی = نادرست | آیا پرونده خوانده شده. |
| پایان پرونده | eof | منطقی = نادرست | به انتهای متن رسیده. |
| خراب | bad | منطقی = نادرست | خطایی در خواندن رخ داده. |
نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
باز هم More
تابع باز هم(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگشایی Decode
تابع کدگشایی(): value.Valueنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
تابعها
کدگشایی Decode
تابع کدگشایی(text: رشته، err &: encerr.EncodingError): value.Valueمقدار پویا تبدیل میکند؛ اگر خطایی باشد، err پر میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگذاری Encode
تابع کدگذاری(v: value.Value، opts: گزینههای جیسون): رشتهمقدار را با گزینههای دادهشده به جیسون تبدیل میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگذاری پیش فرض EncodeDefault
تابع کدگذاری پیش فرض(v: value.Value): رشتهمقدار را با گزینههای پیشفرض به جیسون تبدیل میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
پوشش طرحواره SchemaEnvelope
تابع پوشش طرحواره<T>(v: T): رشتهادغام طرحواره ترکیب شود.واردسازی کدگذاری.جیسون
واردسازی کدگذاری.خطای کدگذاری
ساختار کاربر:
@جیسون "name"
همگانی نام: رشته = ""
@جیسون "age"
همگانی سن: صحیح = ۰
@جیسون "tags"
همگانی برچسبها: وکتور<رشته> = وکتور {}
@جیسون "-"
همگانی گذرواژه: رشته = ""
پایان
تابع ریشه:
ناپایا ک := کاربر { نام = "مریم"، سن = ۲۸، گذرواژه = "راز" }
ک.برچسبها.بیفزا("مدیر")
سرچاپ جیسون.سریال سازی(ک)
سرچاپ جیسون.سریال سازی با تورفتگی(ک، " ")
ناپایا خوانده := کاربر {}
ناپایا خ := خطای کدگذاری.بدون خطا()
سرچاپ جیسون.واسریال سازی(`{"name": "رضا", "age": 41, "tags": ["a", "b"]}`، خوانده، خ)
سرچاپ خوانده.نام، خوانده.سن، خوانده.برچسبها.طول()
سرچاپ جیسون.واسریال سازی(`{"name": "رضا", "age": "چهل"}`، خوانده، خ)، خ.پیام
ناپایا آسان := کاربر {}
سرچاپ جیسون.واسریال سازی آسان گیر(`{"name": "سارا", "extra": 1}`، آسان، خ)، آسان.نام
سرچاپ جیسون.طرحواره(ک)
پوشش := جیسون.پوشش طرحواره(ک)
سرچاپ جیسون.ادغام طرحواره(پوشش) == جیسون.طرحواره(ک)
پایانطرحواره Schema
تابع طرحواره<T>(v: T): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.salam
ادغام طرحواره SchemaMerge
تابع ادغام طرحواره(envelope: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.salam
کدگذار جدید NewEncoder
تابع کدگذار جدید(f: پرونده*): کدگذار جیسوننمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگذار جدید با تورفتگی NewEncoderIndent
تابع کدگذار جدید با تورفتگی(f: پرونده*، unit: رشته): کدگذار جیسوننمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگذار حافظه NewBufEncoder
تابع کدگذار حافظه(): کدگذار جیسونمتن بگیرید.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگذار حافظه با تورفتگی NewBufEncoderIndent
تابع کدگذار حافظه با تورفتگی(unit: رشته): کدگذار جیسوننمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگشای جدید NewDecoder
تابع کدگشای جدید(f: پرونده*): کدگشای جیسوننمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگشای رشته NewBufDecoder
تابع کدگشای رشته(s: رشته): کدگشای جیسوننمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
معتبر Valid
تابع معتبر(text: رشته): منطقیواردسازی کدگذاری.جیسون
تابع ریشه:
ناپایا برچسبها := وکتور {} برگردان وکتور<رشته>
برچسبها.بیفزا(جیسون.رشته جیسون("سلام"))
برچسبها.بیفزا(جیسون.رشته جیسون(`خط "نقل"`))
ناپایا اعضا := وکتور {} برگردان وکتور<رشته>
اعضا.بیفزا(جیسون.عضو("name"، "علی"))
اعضا.بیفزا(جیسون.عضو عدد("age"، ۳۰))
اعضا.بیفزا(جیسون.عضو منطقی("admin"، نادرست))
اعضا.بیفزا(جیسون.عضو اعشار("score"، ۱۸.۵))
اعضا.بیفزا(جیسون.عضو خام("tags"، جیسون.آرایه(برچسبها)))
متن := جیسون.شیء(اعضا)
سرچاپ متن
سرچاپ جیسون.معتبر(متن)، جیسون.معتبر("{ناقص")
سرچاپ جیسون.دریافت(متن، "name")، جیسون.دریافت عدد(متن، "age")، جیسون.دریافت اعشار(متن، "score")
سرچاپ جیسون.دارد(متن، "admin")، جیسون.دارد(متن، "email")، جیسون.کلیدها(متن)
سرچاپ جیسون.اسکیپ("یک\tدو")
زیبا := جیسون.تورفتگی(متن)
سرچاپ زیبا
سرچاپ جیسون.فشرده سازی(زیبا) == جیسون.فشرده سازی(متن)
سرچاپ جیسون.تورفتگی چهار(`{"a":1}`)
سرچاپ جیسون.تورفتگی تب(`{"a":1}`) == "{\n\t\"a\": 1\n}"، جیسون.تورفتگی سفارشی(`[1]`، "--")
تودرتو := `{"user":{"tags":["a","b"],"name":"Ali"}}`
سرچاپ جیسون.دریافت مسیر(تودرتو، "user.name")، جیسون.دریافت مسیر(تودرتو، "user.tags.1")، جیسون.اقلام(جیسون.دریافت مسیر(تودرتو، "user.tags")).طول()
سرچاپ جیسون.حذف نقل قول(`"\u0633\u0644\u0627\u0645"`)
پایاندریافت Get
تابع دریافت(text: رشته، key: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
اسکیپ Escape
تابع اسکیپ(s: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
فشرده سازی Minify
تابع فشرده سازی(text: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
عضو Member
تابع عضو(key: رشته، value: رشته): رشته"name": "علی"، برای ساختن شیء.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
دریافت عدد GetInt
تابع دریافت عدد(text: رشته، key: رشته): صحیحصحیح. مقدارهای بیش از ۳۲ بیت به سقف میرسند؛ برای عددهای بزرگ واسریال سازی در یک صحیح۶۴ را به کار ببرید.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
دریافت اعشار GetFloat
تابع دریافت اعشار(text: رشته، key: رشته): اعشار۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
دارد Has
تابع دارد(text: رشته، key: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
عضو عدد MemberInt
تابع عضو عدد(key: رشته، value: صحیح۶۴): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
عضو منطقی MemberBool
تابع عضو منطقی(key: رشته، value: منطقی): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
عضو اعشار MemberFloat
تابع عضو اعشار(key: رشته، value: اعشار۶۴): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
عضو خام MemberRaw
تابع عضو خام(key: رشته، raw: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
رشته جیسون Str
تابع رشته جیسون(value: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
شیء Object
تابع شیء(members: وکتور<رشته>): رشته{...} کنار هم میگذارد.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
آرایه Array
تابع آرایه(items: وکتور<رشته>): رشته[...] کنار هم میگذارد.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
تورفتگی سفارشی IndentWith
تابع تورفتگی سفارشی(text: رشته، unit: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
تورفتگی تب IndentTabs
تابع تورفتگی تب(text: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
تورفتگی Indent
تابع تورفتگی(text: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
تورفتگی چهار Indent4
تابع تورفتگی چهار(text: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
کلیدها Keys
تابع کلیدها(text: رشته): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
اقلام Items
تابع اقلام(text: رشته): وکتور<رشته>دریافت یا دوباره اقلام.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
حذف نقل قول Unquote
تابع حذف نقل قول(raw: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
دریافت مسیر GetPath
تابع دریافت مسیر(text: رشته، path: رشته): رشتهhits.hits.0._source؛ رشتهها کدگشایی شده برمیگردند، بقیه به صورت JSON خام، و گام ناموجود رشتهی خالی میدهد.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Build.salam
سریال سازی Marshal
تابع سریال سازی<T>(v: T): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.salam
سریال سازی با تورفتگی MarshalIndent
تابع سریال سازی با تورفتگی<T>(v: T، unit: رشته): رشتهسریال سازی، با تورفتگی.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.salam
واسریال سازی Unmarshal
تابع واسریال سازی<T>(text: رشته، out &: T، err &: encerr.EncodingError): منطقیout میریزد. همهی فیلدها باید با گونهی جور حاضر باشند و کلید ناشناخته هم خطاست؛ در صورت شکست، err پر میشود و نادرست برمیگردد.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.salam
واسریال سازی آسان گیر UnmarshalLenient
تابع واسریال سازی آسان گیر<T>(text: رشته، out &: T، err &: encerr.EncodingError): منطقیواسریال سازی، ولی کلیدهای ناشناخته رد میشوند و فیلدهای جاافتاده مقدار قبلیشان را نگه میدارند. مقدار با گونهی نادرست باز هم خطاست.نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.salam