'\" t .\" Title: jose-fmt .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 06/09/2026 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "JOSE\-FMT" "1" "06/09/2026" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" jose-fmt \- تبدیل ساختار JSON میان قالب‌های مختلف سریال‌سازی .SH "خلاصه دستور (SYNOPSIS)" .sp \fBjose fmt\fR [OPTIONS] .SH "نمای کلی (OVERVIEW)" .sp دستور \fBjose fmt\fR سازوکاری برای ساخت و تجزیه اشیاء JSON از طریق خط فرمان فراهم می‌کند\&. این دستور به‌صورت یک ماشین پشته‌ای ساده عمل می‌کند\&. تمام دستورات روی بالاترین عنصر پشته (عنصر TOP) و گهگاه روی عنصر قبلی پشته (عنصر PREV) اثر می‌گذارند\&. دستوراتی که به نوع داده خاصی نیاز دارند، آن را درون پرانتز مشخص می‌کنند؛ برای مثال: «TOP (arr\&.)»\&. .sp این برنامه در صورت موفقیت مقدار 0 و در صورت بروز خطا، شماره اندیس گزینه‌ای را که ناموفق بوده برمی‌گرداند\&. .SH "گزینه‌ها (OPTIONS)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-0\fR, \fB\-\-null\fR : اطمینان از تهی (null) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-a\fR, \fB\-\-append\fR : افزودن عنصر TOP به انتهای آرایه PREV (arr\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-a\fR, \fB\-\-append\fR : تنظیم مقادیر ناموجود از شیء TOP (obj\&.) در شیء PREV (obj\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-A\fR, \fB\-\-array\fR : اطمینان از آرایه بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-B\fR, \fB\-\-boolean\fR : اطمینان از بولی (boolean) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-c\fR, \fB\-\-copy\fR : ایجاد یک کپی عمیق (deep copy) از عنصر TOP و قرار دادن آن در بالای پشته (TOP) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-d\fR \fINAME\fR, \fB\-\-delete\fR=\fINAME\fR : حذف کلید NAME از شیء TOP (obj\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-d\fR , \fB\-\-delete\fR= : حذف عنصر # از آرایه TOP (arr\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-d\fR \-, \fB\-\-delete\fR=\- : حذف عنصر # از انتهای آرایه TOP (arr\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-e\fR, \fB\-\-empty\fR : پاک کردن تمام عناصر از شیء یا آرایه TOP (arr\&./obj\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-E\fR, \fB\-\-equal\fR : اطمینان از برابر بودن عنصر TOP با PREV .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-f\fR \fIFILE\fR, \fB\-\-foreach\fR=\fIFILE\fR : نوشتن شیء یا آرایه TOP (obj\&./arr\&.) در FILE، هر عنصر در یک سطر .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-f\fR \-, \fB\-\-foreach\fR=\- : نوشتن شیء یا آرایه TOP (obj\&./arr\&.) در خروجی استاندارد (STDOUT)، هر عنصر در یک سطر .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-F\fR, \fB\-\-false\fR : اطمینان از نادرست (false) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-g\fR \fINAME\fR, \fB\-\-get\fR=\fINAME\fR : دریافت عنصر با کلید NAME از شیء TOP (obj\&.) و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-g\fR , \fB\-\-get\fR= : دریافت عنصر # از آرایه TOP (arr\&.) و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-g\fR \-, \fB\-\-get\fR=\- : دریافت عنصر # از انتهای آرایه TOP (arr\&.) و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-i\fR , \fB\-\-insert\fR= : درج عنصر TOP در اندیس # از آرایه PREV (arr\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-I\fR, \fB\-\-integer\fR : اطمینان از عدد صحیح (integer) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-j\fR \fIJSON\fR, \fB\-\-json\fR=\fIJSON\fR : تجزیه مقدار ثابت JSON و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-j\fR \fIFILE\fR, \fB\-\-json\fR=\fIFILE\fR : خواندن JSON از FILE و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-j\fR \-, \fB\-\-json\fR=\- : خواندن JSON از ورودی استاندارد (STDIN) و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-l\fR, \fB\-\-length\fR : قرار دادن طول عنصر TOP (اعم از آرایه، رشته یا شیء) در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-M\fR , \fB\-\-move\fR= : انتقال عنصر TOP به تعداد # جایگاه به عقب در پشته .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-N\fR, \fB\-\-number\fR : اطمینان از عدد (number) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-o\fR \fIFILE\fR, \fB\-\-output\fR=\fIFILE\fR : نوشتن عنصر TOP در FILE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-o\fR \-, \fB\-\-output\fR=\- : نوشتن عنصر TOP در خروجی استاندارد (STDOUT) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-O\fR, \fB\-\-object\fR : اطمینان از شیء (object) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-q\fR \fISTR\fR, \fB\-\-quote\fR=\fISTR\fR : تبدیل رشته STR به یک مقدار رشته‌ای JSON و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-Q\fR, \fB\-\-query\fR : پرس‌وجو از پشته از طریق تهیه کپی عمیق و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-R\fR, \fB\-\-real\fR : اطمینان از عدد حقیقی (real) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-s\fR \fINAME\fR, \fB\-\-set\fR=\fINAME\fR : قرار دادن مقدار TOP درون شیء PREV (obj\&.) با نام کلید NAME .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-s\fR , \fB\-\-set\fR= : قرار دادن مقدار TOP درون شیء PREV (obj\&.) در اندیس # .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-s\fR \-, \fB\-\-set\fR=\- : قرار دادن مقدار TOP درون شیء PREV (obj\&.) در اندیس # از انتها .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-S\fR, \fB\-\-string\fR : اطمینان از رشته (string) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-t\fR , \fB\-\-truncate\fR= : کاهش اندازه آرایه TOP (arr\&.) به طول # .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-t\fR \-, \fB\-\-truncate\fR=\- : دور انداختن # عنصر پایانی از آرایه TOP (arr\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-T\fR, \fB\-\-true\fR : اطمینان از درست (true) بودن عنصر TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-u\fR \fIFILE\fR, \fB\-\-unquote\fR=\fIFILE\fR : نوشتن رشته TOP (str\&.) در FILE بدون علامت‌های نقل‌قول (گیومه) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-u\fR \-, \fB\-\-unquote\fR=\- : نوشتن رشته TOP (str\&.) در خروجی استاندارد (STDOUT) بدون علامت‌های نقل‌قول (گیومه) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-U\fR, \fB\-\-unwind\fR : حذف عنصر TOP از پشته .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-x\fR, \fB\-\-extend\fR : افزودن عناصر TOP به انتهای آرایه PREV (arr\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-x\fR, \fB\-\-extend\fR : تنظیم تمامی مقادیر شیء TOP (obj\&.) درون شیء PREV (obj\&.) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-X\fR, \fB\-\-not\fR : معکوس کردن بررسی شرط (assertion) بعدی .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-y\fR, \fB\-\-b64load\fR : رمزگشایی رشته TOP (str\&.) با الگوریتم Base64 سازگار با URL و قرار دادن آن در TOP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-Y\fR, \fB\-\-b64dump\fR : کدگذاری عنصر TOP با الگوریتم Base64 سازگار با URL و قرار دادن آن در TOP .RE .SH "مثال‌ها (EXAMPLES)" .sp استخراج پارامتر \fBalg\fR از سرآیند محافظت‌شده یک JWE: .sp .if n \{\ .RS 4 .\} .nf $ jose fmt \-j "$jwe" \-Og protected \-yOg alg \-Su\- A128KW .fi .if n \{\ .RE .\} .sp فهرست کردن تمام کلیدهای JWK در یک مجموعه کلید JWKSet (هر مورد در یک سطر): .sp .if n \{\ .RS 4 .\} .nf $ echo "$jwkset" | jose fmt \-j\- \-Og keys \-Af\- {"kty":"oct",\&.\&.\&.} {"kty":"EC",\&.\&.\&.} .fi .if n \{\ .RE .\} .sp تغییر الگوریتم در یک کلید JWK: .sp .if n \{\ .RS 4 .\} .nf $ echo "$jwk" | jose fmt \-j\- \-j \*(Aq"A128GCM"\*(Aq \-s alg \-Uo\- {"kty":"oct","alg":"A128GCM",\&.\&.\&.} .fi .if n \{\ .RE .\} .sp ساخت یک قالب JWE: .sp .if n \{\ .RS 4 .\} .nf $ jose fmt \-j \*(Aq{}\*(Aq \-cs unprotected \-q A128KW \-s alg \-UUo\- {"unprotected":{"alg":"A128KW"}} .fi .if n \{\ .RE .\} .SH "نویسنده (AUTHOR)" .sp Nathaniel McCallum