Chức năng JSON

Áp dụng cho: Ứng dụng Canvas Ứng dụng dựa trên mô hình Power Pages

Tạo chuỗi văn bản JSON cho bảng, bản ghi hoặc giá trị.

Mô tả

Hàm JSON trả về dạng Ký hiệu đối tượng JavaScript (JSON) của cấu trúc dữ liệu dưới dạng văn bản sao cho phù hợp để lưu trữ hoặc truyền qua mạng. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdfIETF RFC 8259 mô tả định dạng được sử dụng rộng rãi trong JavaScript và các ngôn ngữ lập trình khác.

Ứng dụng Canvas hỗ trợ các loại dữ liệu mà bảng này liệt kê chi tiết về dạng văn bản của các dữ liệu đó:

Loại dữ liệu Mô tả Ví dụ về kết quả
Boolean đúng hoặc sai. true
Màu sắc Chuỗi chứa dạng thập lục phân gồm 8 chữ số của màu. Dữ liệu này có định dạng #rrggbbaa, trong đó rr là thành phần màu đỏ, gg là màu xanh lá cây, bb là màu xanh da trời và aa là kênh alpha. Đối với kênh alpha, 00 hoàn toàn rõ còn và ff hoàn toàn mờ. Bạn có thể truyền chuỗi cho hàm ColorValue. "#102030ff"
Tiền tệ Số sử dụng dấu tách thập phân thích hợp cho ngôn ngữ của người dùng. Sử dụng ký hiệu khoa học nếu cần thiết. 1.345
Ngày Chuỗi chứa ngày ở định dạng yyyy-mm-dd đạt tiêu chuẩn ISO 8601. "2019-03-31"
Ngày giờ Chuỗi chứa ngày/giờ đạt tiêu chuẩn ISO 8601. Giá trị ngày/giờ theo giờ UTC, với ký hiệu "Z" ở cuối. "2019-03-31T22:32:06.822Z"
Hướng dẫn sử dụng Chuỗi chứa giá trị GUID. Chữ viết thường. "751b58ac-380e-4a04-a925-9f375995cc40"
Hình ảnh, Phương tiện truyền thông Nếu JSONFormat.IncludeBinaryData được chỉ định, các tệp phương tiện sẽ được mã hóa thành một chuỗi. Tham chiếu web sử dụng lược đồ URL http: hoặc https: không được sửa đổi. Tham chiếu đến dữ liệu nhị phân trong bộ nhớ được mã hóa với định dạng "data:mimetype;base64,...". Dữ liệu trong bộ nhớ bao gồm hình ảnh mà người dùng chụp bằng công cụ điều khiển Máy ảnh và bất kỳ tài liệu tham khảo nào khác với các lược đồ URL appres: và blob:. "data:image/jpeg;base64,/9j/4AA..."
Con số Số sử dụng dấu tách thập phân thích hợp cho ngôn ngữ của người dùng. Sử dụng ký hiệu khoa học nếu cần thiết. 1.345
bộ tùy chọn Giá trị số của lựa chọn, không phải nhãn được sử dụng để hiển thị. Sử dụng giá trị số vì giá trị này độc lập về ngôn ngữ. 1001
Thời gian Chuỗi chứa định dạng hh:mm:ss.fff đạt tiêu chuẩn ISO 8601. "23:12:49.000"
Ghi Danh sách các trường và giá trị của chúng được phân cách bằng dấu phẩy, nằm giữa {}. Ký hiệu này giống với các ký hiệu trong bản ghi trên ứng dụng canvas, nhưng tên luôn nằm giữa hai dấu ngoặc kép. Định dạng này không hỗ trợ các bản ghi dựa trên mối quan hệ nhiều-một. { "First Name": "Fred", "Age": 21 }
Bàn Danh sách bản ghi được phân tách bằng dấu phẩy, nằm giữa []. Định dạng này không hỗ trợ các bảng dựa trên mối quan hệ một-nhiều. Sử dụng tùy chọn JSONFormat.FlattenValueTables để xóa bản ghi cho các bảng một cột có cột có tên là Giá trị. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Hai lựa chọn Giá trị Boolean của hai tùy chọn, true or false, không phải nhãn dùng để hiển thị. Sử dụng giá trị Boolean vì giá trị này độc lập về ngôn ngữ. false
Siêu liên kết, Văn bản Chuỗi giữa các dấu ngoặc kép. Hàm hiển thị dấu ngoặc kép được nhúng bằng dấu gạch chéo ngược, thay thế dòng mới bằng "\n" và thực hiện các hoạt động thay thế JavaScript tiêu chuẩn khác. "This is a string."

Chỉ định đối số Format (Định dạng) không bắt buộc để kiểm soát mức độ dễ đọc của kết quả và cách xử lý các loại dữ liệu nhị phân và dữ liệu không được hỗ trợ. Theo mặc định, kết quả càng gọn càng tốt, không có khoảng trắng hoặc dòng mới không cần thiết, đồng thời không được phép có các loại dữ liệu không được hỗ trợ và dữ liệu nhị phân. Bạn có thể kết hợp nhiều định dạng nếu bạn chỉ định toán tử & .

Enum JSONFormat Description
JSONFormat. Nhỏ gọn Mặc định. Kết quả càng gọn càng tốt, không có thêm khoảng trắng hoặc dòng mới.
JSONFormat.FlattenValueTables Là một Bảng giá trị, ký hiệu [1,2,3] tạo ra một bảng chứa các bản ghi, trong đó mỗi bản ghi có một Cột giá trị duy nhất. Trong JSON, ký hiệu tương tự biểu diễn một mảng gồm ba số. Để khả năng tương tác giữa hai bên dễ dàng hơn, tùy chọn này sẽ làm phẳng Power Fx Bảng giá trị thành một mảng thân thiện với JSON thay vì một mảng bản ghi.
JSONFormat.IndentFour Để cải thiện khả năng đọc, kết quả chứa một dòng mới cho mỗi cột và mức lồng ghép, đồng thời sử dụng 4 khoảng trắng cho mỗi cấp độ thụt đầu dòng.
JSONFormat.IncludeBinaryData Kết quả bao gồm các cột chứa hình ảnh, video và clip âm thanh. Định dạng này có thể làm tăng đáng kể kích thước của kết quả và làm giảm hiệu suất của ứng dụng.
JSONFormat.IgnoreBinaryData Kết quả không bao gồm các cột chứa hình ảnh, video hoặc clip âm thanh. Nếu bạn không chỉ định JSONFormat.IncludeBinaryData hoặc JSONFormat.IgnoreBinaryData, hàm sẽ tạo ra lỗi nếu gặp dữ liệu nhị phân.
JSONFormat.IgnoreUnsupportedTypes Bạn có thể sử dụng các loại dữ liệu không được hỗ trợ nhưng ham sẽ không trả về các dữ liệu này. Theo mặc định, hàm sẽ trả về lỗi nếu bạn sử dụng các loại dữ liệu không được hỗ trợ.

Sử dụng các hàm ShowColumnsDropColumns để kiểm soát các dữ liệu nào có trong kết quả và loại bỏ các loại dữ liệu không được hỗ trợ.

Vì hàm JSON có thể tiêu tốn bộ nhớ và dung lượng máy tính, nên bạn chỉ có thể sử dụng hàm này trong hàm hành vi. Bạn có thể lưu giữ kết quả từ hàm JSON trong biến, rồi sau đó có thể sử dụng biến này trong luồng dữ liệu.

Nếu một cột có cả tên hiển thị và tên logic, kết quả sẽ chứa tên logic. Tên hiển thị phản ánh ngôn ngữ của người dùng ứng dụng. Do đó, việc truyền dữ liệu sang một dịch vụ chung sẽ không phù hợp.

Cú pháp

JSON( Cấu trúc dữ liệu [, Định dạng ] )

  • DataStructure – Bắt buộc. Cấu trúc dữ liệu sẽ chuyển đổi sang JSON. Bảng, bản ghi và giá trị cũ được hỗ trợ, lồng ghép tùy ý.
  • Định dạng - Tùy chọn. JSONFormat kiểu liệt kê giá trị. Giá trị mặc định là JSONFormat.Compact, không thêm dấu xuống dòng hoặc khoảng trắng và chặn dữ liệu nhị phân và các cột không được hỗ trợ.

Ví dụ

Dữ liệu theo bậc

  1. Thêm công cụ điều khiển Button (Nút) rồi đặt thuộc tính OnSelect của nút này thành công thức sau.

    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. Hãy chọn nút này đồng thời nhấn giữ phím Alt.

    Bộ sưu tập CitiesByCountry được tạo bằng cấu trúc dữ liệu này. Bạn có thể hiển thị bộ sưu tập đó bằng cách chọn Collections trên menu File rồi chọn tên của bộ sưu tập.

    Bộ sưu tập CitiesByCountry.

    Bạn cũng có thể hiển thị bộ sưu tập này bằng cách chọn Thiết đặt>Các tính năng sắp ra mắt>Bật dạng xem kết quả trên thanh công thức, chọn tên của bộ sưu tập trên thanh công thức, sau đó chọn mũi tên xuống bên cạnh tên của bộ sưu tập bên dưới thanh công thức.

    Bộ sưu tập trong chế độ xem kết quả của thanh công thức.

  3. Thêm nút khác rồi đặt thuộc tính OnSelect của nút này thành công thức sau:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Công thức này đặt biến chung CitiesByCountryJSON thành dạng JSON cho CitiesByCountry.

  4. Hãy chọn nút này đồng thời nhấn giữ phím Alt.

  5. Thêm công cụ điều khiển Label và đặt thuộc tính Văn bản thành biến này.

    CitiesByCountryJSON
    

    Nhãn hiển thị kết quả này, toàn bộ trên một dòng không có khoảng trắng, phù hợp để truyền qua mạng:

    [
      {
        "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. Thay đổi công thức của nút thứ hai để làm cho kết quả dễ đọc hơn.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Chọn nút thứ hai đồng thời nhấn giữ phím Alt.

    Nhãn hiển thị kết quả dễ đọc hơn.

    [
      {
        "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"
      }
    ]
    

Hình ảnh và tệp phương tiện trong base64

  1. Thêm công cụ điều khiển Hình ảnh.

    Công cụ điều khiển này đi kèm SampleImage.

  2. Thêm công cụ điều khiển Button (Nút) rồi đặt thuộc tính OnSelect của nút này thành công thức sau.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Hãy chọn nút này đồng thời nhấn giữ phím Alt.

  4. Thêm nhãn rồi đặt thuộc tính Văn bản thành biến này.

    ImageJSON
    
  5. Thay đổi kích thước của công cụ điều khiển và giảm kích thước phông chữ khi cần để hiển thị hầu hết kết quả.

    Nhãn hiển thị chuỗi văn bản mà hàm JSON có được.

    "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
    

Bảng giá trị

Công thức này:

JSON( [1,2,3] )

Tạo ra chuỗi văn bản [{"Giá trị":1},{"Giá trị":2},{"Giá trị":3}].

Công thức tương tự với tùy chọn JSONFormat.FlattenValueTables:

JSON( [1,2,3], JSONFormat.FlattenValueTables )

Tạo ra chuỗi văn bản [1,2,3].

Lưu ý rằng tùy chọn FlattenValueTables không có tác động khi sử dụng JSON với các bộ sưu tập CityPopulations hoặc CitiesByCountry vì các bảng này không phải là bảng Giá trị. Bảng Giá trị có một cột duy nhất và phải được đặt tên là "Giá trị".