โมดูล json เป็นโมดูล Starlark ของฟังก์ชันที่เกี่ยวข้องกับ JSON
สมาชิก
ถอดรหัส
unknown json.decode(x, default=unbound)
ฟังก์ชันถอดรหัสมีพารามิเตอร์ตำแหน่งที่ต้องระบุ 1 รายการ ได้แก่ สตริง JSON
ซึ่งจะแสดงผลค่า Starlark ที่สตริงระบุ
"null", "true" และ "false" จะแยกวิเคราะห์เป็น None, True และ False
- ตัวเลขจะแยกวิเคราะห์เป็น int หรือเป็น float หากมีจุดทศนิยมหรือเลขชี้กำลัง แม้ว่า JSON จะไม่มีไวยากรณ์สำหรับค่าที่ไม่ใช่ค่าจำกัด แต่ค่าที่มีขนาดใหญ่มากอาจถอดรหัสเป็นค่าอนันต์
- ออบเจ็กต์ JSON จะแยกวิเคราะห์เป็น dict Starlark ใหม่ที่ไม่ได้ตรึง หากสตริงคีย์เดียวกันปรากฏขึ้นมากกว่า 1 ครั้งในออบเจ็กต์ ระบบจะเก็บค่าสุดท้ายของคีย์ไว้
- อาร์เรย์ JSON จะแยกวิเคราะห์เป็นรายการ Starlark ใหม่ที่ไม่ได้ตรึง
หาก
x ไม่ใช่การเข้ารหัส JSON ที่ถูกต้องและมีการระบุพารามิเตอร์
default ที่ไม่บังคับ (รวมถึงระบุเป็น
None) ฟังก์ชันนี้จะแสดงผลค่า
default
หาก x ไม่ใช่การเข้ารหัส JSON ที่ถูกต้องและไม่ได้ระบุพารามิเตอร์ default ที่ไม่บังคับ ฟังก์ชันนี้จะล้มเหลว
พารามิเตอร์
| พารามิเตอร์ |
คำอธิบาย |
x
|
ต้องระบุ
สตริง JSON ที่จะถอดรหัส
|
default
|
ค่าเริ่มต้นคือ unbound
หากระบุ ค่าที่จะแสดงผลเมื่อถอดรหัส x ไม่ได้
|
เข้ารหัส
string json.encode(x)
ฟังก์ชันเข้ารหัสยอมรับอาร์กิวเมนต์ตำแหน่งที่ต้องระบุ 1 รายการ ซึ่งจะแปลงเป็น JSON ตามกรณีต่างๆ ดังนี้
- None, True และ False จะแปลงเป็น "null", "true" และ "false" ตามลำดับ
- int จะเข้ารหัสเป็นจำนวนเต็มทศนิยม ไม่ว่าจะมีขนาดเท่าใดก็ตาม ตัวถอดรหัสบางตัวอาจถอดรหัสจำนวนเต็มขนาดใหญ่มากไม่ได้
- float จะเข้ารหัสโดยใช้จุดทศนิยมหรือเลขชี้กำลัง หรือทั้ง 2 อย่าง แม้ว่าค่าตัวเลขจะเป็นจำนวนเต็มก็ตาม การเข้ารหัสค่าจุดลอยตัวที่ไม่ใช่ค่าจำกัดจะทำให้เกิดข้อผิดพลาด
- ค่าสตริงจะเข้ารหัสเป็นสัญพจน์สตริง JSON ที่ระบุค่า ระบบจะแทนที่ซอร์โรเกตที่ไม่ได้จับคู่แต่ละรายการด้วย U+FFFD
- dict จะเข้ารหัสเป็นออบเจ็กต์ JSON ตามลำดับคีย์ หากคีย์ใดไม่ใช่สตริง จะทำให้เกิดข้อผิดพลาด
- รายการหรือทูเพิลจะเข้ารหัสเป็นอาร์เรย์ JSON
- ค่าที่คล้ายกับ struct จะเข้ารหัสเป็นออบเจ็กต์ JSON ตามลำดับชื่อฟิลด์
ประเภทที่กำหนดโดยแอปพลิเคชันอาจกำหนดการเข้ารหัส JSON ของตัวเอง
การเข้ารหัสค่าอื่นๆ จะทำให้เกิดข้อผิดพลาด
พารามิเตอร์
| พารามิเตอร์ |
คำอธิบาย |
x
|
ต้องระบุ
|
encode_indent
string json.encode_indent(x, *, prefix='', indent='\t')
ฟังก์ชัน encode_indent เทียบเท่ากับ
json.indent(json.encode(x), ...) ดูคำอธิบายพารามิเตอร์การจัดรูปแบบได้ที่
indent
พารามิเตอร์
| พารามิเตอร์ |
คำอธิบาย |
x
|
ต้องระบุ
|
prefix
|
ค่าเริ่มต้นคือ ''
|
indent
|
ค่าเริ่มต้นคือ '\t'
|
เยื้อง
string json.indent(s, *, prefix='', indent='\t')
ฟังก์ชัน indent จะแสดงผลสตริงที่เข้ารหัส JSON ที่ถูกต้องในรูปแบบเยื้อง
องค์ประกอบอาร์เรย์หรือฟิลด์ออบเจ็กต์แต่ละรายการจะปรากฏในบรรทัดใหม่ โดยเริ่มต้นด้วยสตริงคำนำหน้าตามด้วยสตริงเยื้อง 1 รายการขึ้นไปตามระดับการซ้อน
ฟังก์ชันนี้ยอมรับพารามิเตอร์ตำแหน่งที่ต้องระบุ 1 รายการ ได้แก่ สตริง JSON และพารามิเตอร์สตริงแบบคีย์เวิร์ดเท่านั้นที่ไม่บังคับ 2 รายการ ได้แก่ คำนำหน้าและเยื้อง ซึ่งระบุคำนำหน้าของแต่ละบรรทัดใหม่และหน่วยของการเยื้อง
หากอินพุตไม่ถูกต้อง ฟังก์ชันอาจล้มเหลวหรือแสดงผลลัพธ์ที่ไม่ถูกต้อง
พารามิเตอร์
| พารามิเตอร์ |
คำอธิบาย |
s
|
ต้องระบุ
|
prefix
|
ค่าเริ่มต้นคือ ''
|
indent
|
ค่าเริ่มต้นคือ '\t'
|