ฟังก์ชัน JSON
ใช้กับ: แอป Canvas แอปที่ขับเคลื่อนด้วยโมเดล Power Pages
สร้างสตริงข้อความ JSON สำหรับตาราง เรกคอร์ด หรือค่า
คำอธิบาย
ฟังก์ชัน JSON ส่งกลับการแสดง JavaScript Object Notation (JSON) ของโครงสร้างข้อมูลเป็นข้อความเพื่อให้เหมาะสำหรับการจัดเก็บหรือส่งผ่านเครือข่าย [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf และ IETF RFC 8259 อธิบายรูปแบบซึ่งใช้กันอย่างแพร่หลายโดย JavaScript และภาษาการเขียนโปรแกรมอื่นๆ
แอปพื้นที่ทำงานสนับสนุน ประเภทข้อมูล ที่ตารางนี้แสดงรายการพร้อมรายละเอียดเกี่ยวกับการแสดงข้อความ:
ชนิดข้อมูล | คำอธิบาย | ตัวอย่างผลลัพธ์ |
---|---|---|
แบบบูลีน | จริง หรือ เท็จ | true |
สี | สตริงที่มีการแสดงเลขฐานสิบหก 8 หลักสำหรับสี การแสดงนี้ใช้รูปแบบ #rrggbbaa ที่ rr คือองค์ประกอบสีแดง gg คือสีเขียว bb คือสีฟ้า และ aa คือช่องทางอัลฟา สำหรับช่องทางอัลฟา 00 คือความโปร่งใส และ ff คือทึบ คุณสามารถส่งผ่านสตริง ไปที่ฟังก์ชัน ColorValue | "#102030ff" |
สกุลเงิน | ตัวเลขที่ใช้ตัวคั่นทศนิยมที่เหมาะสมสำหรับภาษาของผู้ใช้ ใช้สัญลักษณ์ทางวิทยาศาสตร์ หากจำเป็น | 1.345 |
วันที่ | สตริงที่มีวันที่ในรูปแบบ ISO 8601 YYYY-MM-DD | "2019-03-31" |
วันที่เวลา | สตริงที่มีวันที่/เวลา ISO 8601 ค่าวันที่/เวลา อยู่ใน UTC ตามที่ลงท้ายด้วย "Z" หมายถึง | "2019-03-31T22:32:06.822Z" |
GUID | สตริงที่มีค่า GUID ตัวอักษรเป็นตัวพิมพ์เล็ก | "751b58ac-380e-4a04-a925-9f375995cc40" |
ภาพ สื่อ | ถ้า JSONFormat.IncludeBinaryData ถูำกระบุ ไฟล์สื่อถูกเข้ารหัสในสตริง การอ้างอิงเว็บที่ใช้รูปแบบ http: หรือ https: URL จะไม่ได้รับการแก้ไข การอ้างอิงไปยังข้อมูลไบนารีในหน่วยความจำถูกเข้ารหัสด้วยรูปแบบ "data:mimetype;base64,..." ข้อมูลในหน่วยความจำรวมถึงภาพที่ผู้ใช้ถ่าย โดยใช้ตัวควบคุม กล้อง และการอ้างอิงอื่นๆ ด้วยรูปแบบ URL appres: และ blob: | "data:image/jpeg;base64,/9j/4AA..." |
ตัวเลข | ตัวเลขที่ใช้ตัวคั่นทศนิยมที่เหมาะสมสำหรับภาษาของผู้ใช้ ใช้สัญลักษณ์ทางวิทยาศาสตร์ หากจำเป็น | 1.345 |
ชุดตัวเลือก | ค่าตัวเลขของตัวเลือก ไม่ใช่ป้ายชื่อที่ใช้สำหรับแสดงผล มีการใช้ค่าตัวเลขเนื่องจากเป็นรูปแบบที่ไม่ขึ้นกับภาษา | 1001 |
เวลา | สตริงที่มีรูปแบบ ISO 8601 hh:mm:ss.fff | "23:12:49.000" |
บันทึก | รายการคั่นด้วยจุลภาค ระหว่าง { และ } ของฟิลด์และค่าของฟิลด์ สัญกรณ์นี้คล้ายกับเรกคอร์ดในแอปพื้นที่ทำงาน แต่ชื่อจะอยู่ระหว่างเครื่องหมายอัญประกาศคู่เสมอ รูปแบบนี้ไม่รองรับเรกคอร์ดที่ยึดตาม ความสัมพันธ์แบบกลุ่มต่อหนึ่ง | { "First Name": "Fred", "Age": 21 } |
โต๊ะ | รายการคั่นด้วยจุลภาค ระหว่าง [ และ ] ของเรกคอร์ด รูปแบบนี้ไม่รองรับตารางที่ยึดตาม ความสัมพันธ์แบบหนึ่งต่อกลุ่ม ใช้ตัวเลือก JSONFormat.FlattenValueTables เพื่อลบระเบียนสำหรับตารางคอลัมน์เดี่ยวที่มีคอลัมน์ชื่อ ค่า | [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ] |
สองตัวเลือก | ค่าบูลีนของสองตัวเลือก จริง หรือ เท็จ ไม่ใช่ป้ายกำกับที่ใช้สำหรับแสดงผล ค่าบูลีนถูกใช้ เนื่องจากเป็นรูปแบบที่ไม่ขึ้นกับภาษา | false |
ไฮเปอร์ลิงก์, ข้อความ | สตริงระหว่างเครื่องหมายอัญประกาศคู่ เครื่องหมายอัญประกาศคู่ฝัง Escape ฟังก์ชัน ด้วยเครื่องหมายทับขวา แทนที่บรรทัดใหม่ด้วย "\n" และทำการแทนที่ JavaScript มาตรฐานอื่นๆ | "This is a string." |
ระบุอาร์กิวเมนต์ รูปแบบ ทางเลือก เพื่อควบคุมวิธีการอ่านผลลัพธ์ และวิธีจัดการชนิดข้อมูลและไบนารีที่ไม่สนับสนุน โดยค่าเริ่มต้น ผลลัพธ์จะมีขนาดกะทัดรัดที่สุดโดยไม่มีช่องว่างหรือบรรทัดใหม่ที่ไม่จำเป็น และไม่อนุญาตให้ใช้ชนิดข้อมูลและข้อมูลไบนารีที่ไม่ได้รับการสนับสนุน คุณสามารถรวมหลายรูปแบบได้ หากคุณระบุตัวดำเนินการ &
enum JSONFormat | Description |
---|---|
รูปแบบ JSON แบบกะทัดรัด | ค่าเริ่มต้น ผลลัพธ์มีขนาดกะทัดรัดที่สุดเท่าที่จะเป็นไปได้โดยไม่มีช่องว่างหรือบรรทัดใหม่ |
JSONFormat.ตารางค่าแบน | เนื่องจาก ตารางค่า สัญกรณ์ [1,2,3] จะส่งผลให้เกิดตารางที่มีระเบียน โดยแต่ละระเบียนจะมีคอลัมน์ ค่า เดียว ใน JSON สัญกรณ์เดียวกันนั้นแสดงถึงอาร์เรย์ของตัวเลขสามตัว เพื่อให้การทำงานร่วมกันระหว่างทั้งสองง่ายขึ้น ตัวเลือกนี้จะทำให้ตารางค่า Power Fx เรียบเป็นอาร์เรย์ที่เข้าใจง่ายของ JSON แทนที่จะเป็นอาร์เรย์ของระเบียน |
รูปแบบ JSON.IndentFour | เพื่อปรับปรุงความสามารถในการอ่าน ผลลัพธ์ประกอบด้วยบรรทัดใหม่สำหรับแต่ละคอลัมน์ และระดับการซ้อนและใช้ช่องว่างสี่ช่องสำหรับแต่ละระดับการเยื้อง |
รูปแบบ JSON รวมข้อมูลไบนารี | ผลลัพธ์ประกอบด้วยคอลัมน์รูปภาพ วิดีโอ และคลิปเสียง รูปแบบนี้สามารถเพิ่มขนาดของผลลัพธ์ได้อย่างมากและลดประสิทธิภาพของแอปของคุณ |
รูปแบบ JSON.ละเว้นข้อมูลไบนารี | ผลลัพธ์ไม่่รวมถึงคอลัมน์รูปภาพ วิดีโอ หรือคลิปเสียง หากคุณระบุ ไม่ว่า JSONFormat.IncludeBinaryData หรือ JSONFormat.IgnoreBinaryData ฟังก์ชันสร้างข้อผิดพลาดหากพบข้อมูลไบนารี |
JSONFormat.ละเว้นประเภทที่ไม่รองรับ | อนุญาตให้ใช้ชนิดข้อมูลที่ไม่รองรับ แต่ผลลัพธ์จะไม่รวม ตามค่าเริ่มต้น ชนิดข้อมูลที่ไม่สนับสนุนจะทำให้เกิดข้อผิดพลาด |
ใช้ฟังก์ชัน ShowColumns และ DropColumns เพื่อควบคุมข้อมูลที่ผลลัพธ์รวมถึง และลบชนิดข้อมูลที่ไม่สนับสนุน
เพราะ JSON สามารถเป็นได้ทั้งหน่วยความจำและการประมวลผลแบบเข้มข้น คุณสามารถใช้ฟังก์ชันนี้เฉพาะใน ฟังก์ชันลักษณะการทำงาน คุณสามารถจับภาพผลลัพธ์ได้จาก JSON เป็น ตัวแปร ซึ่งคุณสามารถใช้ในการโฟลว์ข้อมูล
หากคอลัมน์มีทั้ง ชื่อที่แสดง และชื่อตรรกะ ผลลัพธ์จะมีชื่อตรรกะ ชื่อที่แสดงแสดงถึงภาษาของผู้ใช้แอป ดังนั้นจึงไม่เหมาะสมสำหรับการถ่ายโอนข้อมูลไปยังบริการทั่วไป
ไวยากรณ์
JSON( โครงสร้างข้อมูล [, รูปแบบ ] )
- DataStructure – จำเป็น โครงสร้างข้อมูลที่จะแปลงเป็น JSON รองรับ ตาราง เรกคอร์ด และค่าดั้งเดิม ซ้อนกันโดยพลการ
- รูปแบบ - ตัวเลือก ค่า JSONFormat enum ค่าเริ่มต้นคือ JSONFormat.Compact ซึ่งไม่ได้เพิ่มบรรทัดใหม่หรือช่องว่าง และบล็อกข้อมูลไบนารีและคอลัมน์ที่ไม่สนับสนุน
ตัวอย่าง
ข้อมูลตามลำดับชั้น
แทรกตัวควบคุม ปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
ClearCollect( CityPopulations, { City: "London", Country: "United Kingdom", Population: 8615000 }, { City: "Berlin", Country: "Germany", Population: 3562000 }, { City: "Madrid", Country: "Spain", Population: 3165000 }, { City: "Hamburg", Country: "Germany", Population: 1760000 }, { City: "Barcelona", Country: "Spain", Population: 1602000 }, { City: "Munich", Country: "Germany", Population: 1494000 } ); ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
เลือกปุ่มขณะที่กดแป้น Alt ค้างไว้
คอลเลกชัน CitiesByCountry ถูกสร้างขึ้นด้วยโครงสร้างข้อมูลนี้ ซึ่งคุณสามารถแสดงได้โดยเลือก คอลเลกชัน บนเมนู ไฟล์ แล้วเลือกชื่อของคอลเลกชัน
คุณยังสามารถแสดงคอลเลกชันนี้โดยเลือก การตั้งค่า>คุณลักษณะที่กำลังจะเกิดขึ้น>เปิดใช้งานการดูผลลัพธ์ของแถบสูตร เลือกชื่อของคอลเลกชันในแถบสูตร จากนั้นเลือกลูกศรลงที่อยู่ถัดจากชื่อของคอลเลกชันภายใต้แถบสูตร
แทรกอีกปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:
Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
สูตรนี้ตั้งค่าตัวแปรส่วนกลาง CitiesByCountryJSON เป็นตัวแทน JSON สำหรับ CitiesByCountry
เลือกปุ่มขณะที่กดแป้น Alt ค้างไว้
แทรกตัวควบคุม ป้ายชื่อ แล้วตั้งค่าคุณสมับติ Text เป็นตัวแปรนี้:
CitiesByCountryJSON
ป้ายกำกับแสดงผลลัพธ์นี้ ทั้งหมดในบรรทัดเดียวโดยไม่มีช่องว่าง เหมาะสำหรับการส่งผ่านเครือข่าย:
[ { "Cities": [{ "City": "London", "Population": 8615000 }], "Country": "United Kingdom" }, { "Cities": [ { "City": "Berlin", "Population": 3562000 }, { "City": "Hamburg", "Population": 1760000 }, { "City": "Munich", "Population": 1494000 } ], "Country": "Germany" }, { "Cities": [ { "City": "Madrid", "Population": 3165000 }, { "City": "Barcelona", "Population": 1602000 } ], "Country": "Spain" } ]
เปลี่ยนสูตรของปุ่มที่สองเพื่อให้ผลลัพธ์อ่านง่ายขึ้น
Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
เลือกปุ่มที่สองขณะที่กดปุ่ม Alt ค้างไว้
ป้ายกำกับแสดงผลลัพธ์ที่อ่านได้มากขึ้น
[ { "Cities": [ { "City": "London", "Population": 8615000 } ], "Country": "United Kingdom" }, { "Cities": [ { "City": "Berlin", "Population": 3562000 }, { "City": "Hamburg", "Population": 1760000 }, { "City": "Munich", "Population": 1494000 } ], "Country": "Germany" }, { "Cities": [ { "City": "Madrid", "Population": 3165000 }, { "City": "Barcelona", "Population": 1602000 } ], "Country": "Spain" } ]
รูปภาพและสื่อใน Base64
เพิ่มตัวควบคุม รูปภาพ
การควบคุมนี้นำมาซึ่ง SampleImage
เพิ่มตัวควบคุม ปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้
Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
เลือกปุ่มขณะที่กดแป้น Alt ค้างไว้
เพิ่มป้ายกำกับ และตั้งค่าคุณสมบัติ Text เป็นตัวแปรนี้
ImageJSON
ปรับขนาดตัวควบคุมและลดขนาดตัวอักษรตามต้องกา รเพื่อแสดงผลลัพธ์ส่วนใหญ่
ป้ายกำกับแสดงสตริงข้อความที่ฟังก์ชัน JSON จับ
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
ตารางค่า
สูตรนี้:
JSON( [1,2,3] )
สร้างสตริงข้อความ [{"Value":1},{"Value":2},{"Value":3}]
สูตรเดียวกันกับตัวเลือก JSONFormat.FlattenValueTables:
JSON( [1,2,3], JSONFormat.FlattenValueTables )
สร้างสตริงข้อความ [1,2,3]
โปรดทราบว่าตัวเลือก FlattenValueTables ไม่มีผลกระทบเมื่อใช้ JSON กับคอลเลกชัน CityPopulations หรือ CitiesByCountry เนื่องจากตารางเหล่านี้ไม่ใช่ตารางค่า ตารางค่ามีคอลัมน์เดียวและต้องตั้งชื่อว่า "ค่า"