JSON

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

โมดูล json คือโมดูล Starlark ของฟังก์ชันที่เกี่ยวข้องกับ JSON

สมาชิก

ถอดรหัส

unknown json.decode(x, default=unbound)

ฟังก์ชัน decode มีพารามิเตอร์ตำแหน่งที่ต้องระบุ 1 รายการ ได้แก่ สตริง JSON โดยจะแสดงค่า Starlark ที่สตริงระบุ
  • ระบบจะแยกวิเคราะห์ "null", "true" และ "false" เป็น None, True และ False
  • ตัวเลขจะถูกแยกวิเคราะห์เป็น int หรือแบบลอยตัวหากมีจุดทศนิยมหรือเลขชี้กำลัง แม้ว่า JSON จะไม่มีไวยากรณ์สำหรับค่าที่ไม่จำกัด แต่ระบบอาจถอดรหัสค่าที่ใหญ่มากเป็น "อินฟินิตี้"
  • ระบบจะแยกวิเคราะห์ออบเจ็กต์ JSON เป็นดิจิตอล Starlark ที่ไม่ได้ตรึงใหม่ หากสตริงคีย์เดียวกันเกิดขึ้นในออบเจ็กต์มากกว่า 1 ครั้ง ค่าสุดท้ายสำหรับคีย์จะยังคงอยู่
  • อาร์เรย์ JSON ถูกแยกวิเคราะห์เป็นรายการใหม่ของ Starlark ที่ไม่ได้ตรึงไว้
หาก x ไม่ได้เป็นการเข้ารหัส JSON ที่ถูกต้องและมีการระบุพารามิเตอร์ default (ไม่บังคับ) (รวมถึงการระบุเป็น None) ฟังก์ชันนี้จะแสดงผลค่า default หาก x ไม่ได้เป็นการเข้ารหัส JSON ที่ถูกต้อง และไม่ได้ระบุพารามิเตอร์ default (ไม่บังคับ) ฟังก์ชันนี้จะดำเนินการไม่สำเร็จ

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
สตริง JSON ที่จะถอดรหัส
default ค่าเริ่มต้นคือ unbound
หากระบุ ค่าที่จะแสดงเมื่อไม่สามารถถอดรหัส x

เข้ารหัส

string json.encode(x)

ฟังก์ชัน encode จะยอมรับอาร์กิวเมนต์ตำแหน่งที่ต้องระบุ 1 รายการ ซึ่งจะแปลงเป็น JSON ตามกรณีต่อไปนี้

  • ระบบจะแปลง None, True และ False เป็น "null", "true" และ "false" ตามลำดับ
  • ระบบจะเข้ารหัส int ไม่ว่าจะมีขนาดใหญ่เพียงใดก็ตามเป็นจำนวนเต็มทศนิยม ตัวถอดรหัสบางตัวอาจถอดรหัสจำนวนเต็มขนาดใหญ่มากไม่ได้
  • ระบบจะเข้ารหัสตัวเลขทศนิยมโดยใช้จุดทศนิยมหรือตัวยกหรือทั้ง 2 อย่าง แม้ว่าค่าตัวเลขจะเป็นจำนวนเต็มก็ตาม การโค้ดค่าทศนิยมที่ไม่แน่นอนเป็นข้อผิดพลาด
  • ค่าสตริงจะเข้ารหัสเป็นสตริง JSON ที่แสดงค่า ระบบจะแทนที่ตัวแทนที่ไม่จับคู่แต่ละรายการด้วย U+FFFD
  • คำสั่งจะเข้ารหัสเป็นออบเจ็กต์ JSON ตามลําดับคีย์ ระบบจะแสดงข้อผิดพลาดหากคีย์ใดไม่ใช่สตริง
  • รายการหรือทูเพลตจะเข้ารหัสเป็นอาร์เรย์ JSON
  • ค่าที่มีลักษณะคล้ายโครงสร้างจะได้รับการเข้ารหัสเป็นออบเจ็กต์ 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'