แชร์ผ่าน


ฟังก์ชัน JSON

ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง

สร้างสตริงข้อความ 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 }
Table รายการคั่นด้วยจุลภาค ระหว่าง [ และ ] ของเรกคอร์ด รูปแบบนี้ไม่รองรับตารางที่ยึดตาม ความสัมพันธ์แบบหนึ่งต่อกลุ่ม ใช้ตัวเลือก JSONFormat.FlattenValueTables เพื่อลบระเบียนสำหรับตารางคอลัมน์เดี่ยวที่มีคอลัมน์ชื่อ ค่า [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
สองตัวเลือก ค่าบูลีนของสองตัวเลือก จริง หรือ เท็จ ไม่ใช่ป้ายกำกับที่ใช้สำหรับแสดงผล ค่าบูลีนถูกใช้ เนื่องจากเป็นรูปแบบที่ไม่ขึ้นกับภาษา false
การเชื่อมโยงหลายมิติ ข้อความ สตริงระหว่างเครื่องหมายอัญประกาศคู่ เครื่องหมายอัญประกาศคู่ฝัง Escape ฟังก์ชัน ด้วยเครื่องหมายทับขวา แทนที่บรรทัดใหม่ด้วย "\n" และทำการแทนที่ JavaScript มาตรฐานอื่นๆ "This is a string."

ระบุอาร์กิวเมนต์ รูปแบบ ทางเลือก เพื่อควบคุมวิธีการอ่านผลลัพธ์ และวิธีจัดการชนิดข้อมูลและไบนารีที่ไม่สนับสนุน โดยค่าเริ่มต้น ผลลัพธ์จะมีขนาดกะทัดรัดที่สุดโดยไม่มีช่องว่างหรือบรรทัดใหม่ที่ไม่จำเป็น และไม่อนุญาตให้ใช้ชนิดข้อมูลและข้อมูลไบนารีที่ไม่ได้รับการสนับสนุน คุณสามารถรวมหลายรูปแบบได้ หากคุณระบุตัวดำเนินการ &

enum JSONFormat Description
JSONFormat.Compact ค่าเริ่มต้น ผลลัพธ์มีขนาดกะทัดรัดที่สุดเท่าที่จะเป็นไปได้โดยไม่มีช่องว่างหรือบรรทัดใหม่
JSONFormat.FlattenValueTables เนื่องจาก ตารางค่า สัญกรณ์ [1,2,3] จะส่งผลให้เกิดตารางที่มีระเบียน โดยแต่ละระเบียนจะมีคอลัมน์ ค่า เดียว ใน JSON สัญกรณ์เดียวกันนั้นแสดงถึงอาร์เรย์ของตัวเลขสามตัว เพื่อให้การทำงานร่วมกันระหว่างทั้งสองง่ายขึ้น ตัวเลือกนี้จะทำให้ตารางค่า Power Fx เรียบเป็นอาร์เรย์ที่เข้าใจง่ายของ JSON แทนที่จะเป็นอาร์เรย์ของระเบียน
JSONFormat.IndentFour เพื่อปรับปรุงความสามารถในการอ่าน ผลลัพธ์ประกอบด้วยบรรทัดใหม่สำหรับแต่ละคอลัมน์ และระดับการซ้อนและใช้ช่องว่างสี่ช่องสำหรับแต่ละระดับการเยื้อง
JSONFormat.IncludeBinaryData ผลลัพธ์ประกอบด้วยคอลัมน์รูปภาพ วิดีโอ และคลิปเสียง รูปแบบนี้สามารถเพิ่มขนาดของผลลัพธ์ได้อย่างมากและลดประสิทธิภาพของแอปของคุณ
JSONFormat.IgnoreBinaryData ผลลัพธ์ไม่่รวมถึงคอลัมน์รูปภาพ วิดีโอ หรือคลิปเสียง หากคุณระบุ ไม่ว่า JSONFormat.IncludeBinaryData หรือ JSONFormat.IgnoreBinaryData ฟังก์ชันสร้างข้อผิดพลาดหากพบข้อมูลไบนารี
JSONFormat.IgnoreUnsupportedTypes อนุญาตให้ใช้ชนิดข้อมูลที่ไม่รองรับ แต่ผลลัพธ์จะไม่รวม ตามค่าเริ่มต้น ชนิดข้อมูลที่ไม่สนับสนุนจะทำให้เกิดข้อผิดพลาด

ใช้ฟังก์ชัน ShowColumns และ DropColumns เพื่อควบคุมข้อมูลที่ผลลัพธ์รวมถึง และลบชนิดข้อมูลที่ไม่สนับสนุน

เพราะ JSON สามารถเป็นได้ทั้งหน่วยความจำและการประมวลผลแบบเข้มข้น คุณสามารถใช้ฟังก์ชันนี้เฉพาะใน ฟังก์ชันลักษณะการทำงาน คุณสามารถจับภาพผลลัพธ์ได้จาก JSON เป็น ตัวแปร ซึ่งคุณสามารถใช้ในการโฟลว์ข้อมูล

หากคอลัมน์มีทั้ง ชื่อที่แสดง และชื่อตรรกะ ผลลัพธ์จะมีชื่อตรรกะ ชื่อที่แสดงแสดงถึงภาษาของผู้ใช้แอป ดังนั้นจึงไม่เหมาะสมสำหรับการถ่ายโอนข้อมูลไปยังบริการทั่วไป

ไวยากรณ์

JSON( DataStructure [, Format ] )

  • DataStructure - จำเป็นต้องมี โครงสร้างข้อมูลที่จะแปลงเป็น JSON รองรับ ตาราง เรกคอร์ด และค่าดั้งเดิม ซ้อนกันโดยพลการ
  • รูปแบบ - ไม่บังคับ ค่า enum JSONFormat ค่าเริ่มต้นคือ JSONFormat.Compact ซึ่งไม่ได้เพิ่มบรรทัดใหม่หรือช่องว่าง และบล็อกข้อมูลไบนารีและคอลัมน์ที่ไม่สนับสนุน

ตัวอย่าง

ข้อมูลตามลำดับชั้น

  1. แทรกตัวควบคุม ปุ่ม และตั้งค่าคุณสมบัติ 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" ) )
    
  2. เลือกปุ่มขณะที่กดแป้น Alt ค้างไว้

    คอลเลกชัน CitiesByCountry ถูกสร้างขึ้นด้วยโครงสร้างข้อมูลนี้ ซึ่งคุณสามารถแสดงได้โดยเลือก คอลเลกชัน บนเมนู ไฟล์ แล้วเลือกชื่อของคอลเลกชัน

    คอลเลกชัน CitiesByCountry

    คุณยังสามารถแสดงคอลเลกชันนี้โดยเลือก การตั้งค่า>คุณลักษณะที่กำลังจะเกิดขึ้น>เปิดใช้งานการดูผลลัพธ์ของแถบสูตร เลือกชื่อของคอลเลกชันในแถบสูตร จากนั้นเลือกลูกศรลงที่อยู่ถัดจากชื่อของคอลเลกชันภายใต้แถบสูตร

    คอลเลกชันในมุมมองผลลัพธ์ของแถบสูตร

  3. แทรกอีกปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    สูตรนี้ตั้งค่าตัวแปรส่วนกลาง CitiesByCountryJSON เป็นตัวแทน JSON สำหรับ CitiesByCountry

  4. เลือกปุ่มขณะที่กดแป้น Alt ค้างไว้

  5. แทรกตัวควบคุม ป้ายชื่อ แล้วตั้งค่าคุณสมับติ 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"
      }
    ]
    
  6. เปลี่ยนสูตรของปุ่มที่สองเพื่อให้ผลลัพธ์อ่านง่ายขึ้น

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. เลือกปุ่มที่สองขณะที่กดปุ่ม 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

  1. เพิ่มตัวควบคุม รูปภาพ

    การควบคุมนี้นำมาซึ่ง SampleImage

  2. เพิ่มตัวควบคุม ปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. เลือกปุ่มขณะที่กดแป้น Alt ค้างไว้

  4. เพิ่มป้ายกำกับ และตั้งค่าคุณสมบัติ Text เป็นตัวแปรนี้

    ImageJSON
    
  5. ปรับขนาดตัวควบคุมและลดขนาดตัวอักษรตามต้องกา รเพื่อแสดงผลลัพธ์ส่วนใหญ่

    ป้ายกำกับแสดงสตริงข้อความที่ฟังก์ชัน 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 เนื่องจากตารางเหล่านี้ไม่ใช่ตารางค่า ตารางค่ามีคอลัมน์เดียวและต้องตั้งชื่อว่า "ค่า"