جیسون encoding/json
ساختن و خواندن جیسون: از رشتهی ساده تا تبدیل خودکار ساختارها و خواندن جریانی.
واردسازی کدگذاری.جیسون
برای کار با جیسون سه راه هست. برای کارهای ساده، روالهایی مثل عضو، شیء و دریافت مستقیم با متن جیسون کار میکنند. برای برنامههای واقعی، سریال سازی و واسریال سازی یک ساختار سلام را به جیسون و برعکس تبدیل میکنند. برای دادهای که شکلش را از پیش نمیدانید، کدگشایی یک مقدار پویا برمیگرداند.
نام کلید هر فیلد را با @json "name" بالای فیلد تعیین کنید؛ @json "-" فیلد را کنار میگذارد. بدون آن، نام خود فیلد کلید میشود.
گونهها
گزینههای جیسون JSONOptions
ساختار گزینههای جیسونکدگذاری.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| indent | indent | رشته = "" | واحد تورفتگی؛ خالی یعنی یک خط. |
| sort_keys | sort_keys | منطقی = نادرست | کلیدها به ترتیب الفبا نوشته شوند. بدون آن، ترتیب کلیدها ثابت نیست. |
| ignore_null | ignore_null | منطقی = نادرست | کلیدهای با مقدار تهی نوشته نشوند. |
واردسازی کدگذاری.جیسون
واردسازی کدگذاری.مقدار
واردسازی کدگذاری.خطای کدگذاری
واردسازی سیستم پرونده.پرونده
روال ریشه:
ناپایا خ := خطای کدگذاری.بدون خطا()
م := جیسون.کدگشایی(`{"city": "تهران", "zones": [1, 2, 22]}`، خ)
سرچاپ خطای کدگذاری.خطا است(خ)، مقدار.به رشته(مقدار.مقدار کلید(م، "city"))
سرچاپ جیسون.کدگذاری پیش فرض(م)
گ := جیسون.گزینههای جیسون { indent = " "، sort_keys = درست }
سرچاپ جیسون.کدگذاری(م، گ)
_ := جیسون.کدگشایی("[1, 2"، خ)
سرچاپ خطای کدگذاری.خطا است(خ)، خ.position
ناپایا ک := جیسون.کدگذار حافظه()
ک.کدگذاری(مقدار.مقدار صحیح(۱))
ک.کدگذاری(مقدار.مقدار رشته("دو"))
سرچاپ ک.متن()
ک.بستن()
ناپایا ت := جیسون.کدگذار حافظه با تورفتگی(" ")
ت.کدگذاری(م)
سرچاپ ت.متن()
ت.بستن()
ن := پرونده.بازکردن("lines.ndjson"، "wb")
ناپایا پن := جیسون.کدگذار جدید(ن)
پن.کدگذاری(مقدار.مقدار صحیح(۱۰))
پن.کدگذاری(مقدار.مقدار صحیح(۲۰))
پن.بستن()
ناپایا پت := جیسون.کدگذار جدید با تورفتگی(پرونده.بازکردن("pretty.json"، "wb")، "\t")
پت.کدگذاری(م)
پت.بستن()
ناپایا خوان := جیسون.کدگشای جدید(پرونده.بازکردن("lines.ndjson"، "rb"))
ناپایا جمع := ۰ برگردان صحیح۶۴
تا خوان.باز هم():
جمع += مقدار.به صحیح(خوان.کدگشایی())
پایان
سرچاپ جمع
ناپایا گ۲ := جیسون.کدگشای رشته("{\"a\": 1}\n{\"a\": 2}\n")
تا گ۲.باز هم():
سرچاپ جیسون.کدگذاری پیش فرض(گ۲.کدگشایی())
پایان
پایانکدگذار جیسون JSONEncoder
ساختار کدگذار جیسون| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| dst | dst | پرونده* | پروندهی مقصد، اگر در پرونده مینویسد. |
| useFile | useFile | منطقی = نادرست | آیا در پرونده مینویسد یا در حافظه. |
| buf | buf | رشته.StringBuilder | حافظهی متن، وقتی در حافظه مینویسد. |
| indent | indent | رشته = "" | واحد تورفتگی؛ خالی یعنی هر مقدار در یک خط. |
| count | 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 | src | پرونده* | پروندهی منبع. |
| useFile | useFile | منطقی = نادرست | آیا از پرونده میخواند. |
| buf | buf | رشته = "" | متن خواندهشده. |
| pos | pos | صحیح = 0 | جای فعلی در متن. |
| loaded | loaded | منطقی = نادرست | آیا پرونده خوانده شده. |
| eof | eof | منطقی = نادرست | به انتهای متن رسیده. |
| bad | bad | منطقی = نادرست | خطایی در خواندن رخ داده. |
نمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
باز هم More
روال باز هم(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Value.salam
کدگشایی Decode
روال کدگشایی(): value.Valueنمونهی این مورد همراه با موارد بالاتر آمده است: 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]`، "--")
پایاندریافت 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
پوشش طرحواره SchemaEnvelope
روال پوشش طرحواره<T>(v: T): رشتهادغام طرحواره ترکیب شود.واردسازی کدگذاری.جیسون
واردسازی کدگذاری.خطای کدگذاری
ساختار کاربر:
@json "name"
همگانی نام: رشته = ""
@json "age"
همگانی سن: صحیح = ۰
@json "tags"
همگانی برچسبها: وکتور<رشته> = وکتور {}
@json "-"
همگانی گذرواژه: رشته = ""
پایان
روال ریشه:
ناپایا ک := کاربر { نام = "مریم"، سن = ۲۸، گذرواژه = "راز" }
ک.برچسبها.بیفزا("مدیر")
سرچاپ جیسون.سریال سازی(ک)
سرچاپ جیسون.سریال سازی با تورفتگی(ک، " ")
ناپایا خوانده := کاربر {}
ناپایا خ := خطای کدگذاری.بدون خطا()
سرچاپ جیسون.واسریال سازی(`{"name": "رضا", "age": 41, "tags": ["a", "b"]}`، خوانده، خ)
سرچاپ خوانده.نام، خوانده.سن، خوانده.برچسبها.طول()
سرچاپ جیسون.واسریال سازی(`{"name": "رضا", "age": "چهل"}`، خوانده، خ)، خ.message
ناپایا آسان := کاربر {}
سرچاپ جیسون.واسریال سازی آسان گیر(`{"name": "سارا", "extra": 1}`، آسان، خ)، آسان.نام
سرچاپ جیسون.طرحواره(ک)
پوشش := جیسون.پوشش طرحواره(ک)
سرچاپ جیسون.ادغام طرحواره(پوشش) == جیسون.طرحواره(ک)
پایانطرحواره Schema
روال طرحواره<T>(v: T): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.salam
ادغام طرحواره SchemaMerge
روال ادغام طرحواره(envelope: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: encoding-json-Marshal.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
کدگذار جدید 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
سریال سازی 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