Hàm ParseJSON

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

Thông dịch một chuỗi JSON và trả về một đối tượng chưa nhập.

Description

Hàm ParseJSON sẽ phân tích cú pháp một chuỗi JSON hợp lệ và trả về một đối tượng chưa nhập đại diện cho cấu trúc JSON.

Hàm ParseJSON có thể trả về lỗi nếu văn bản không phải là JSON hợp lệ theo định dạng Ký hiệu đối tượng JavaScript (JSON) được mô tả trong ECMA-404IETF RFC 8259.

Cú pháp

ParseJSON( JSONString )

  • JSONString – Bắt buộc. Cấu trúc JSON được biểu diễn dưới dạng văn bản.

Chuyển đổi loại dữ liệu đối tượng chưa nhập

ParseJSON trả về một đối tượng chưa nhập yêu cầu chuyển đổi rõ ràng các giá trị trường trong các loại dữ liệu được hỗ trợ. Bảng sau đây liệt kê các kiểu dữ liệu trong Power Apps và một loại dữ liệu JSON tương ứng cũng như cách chuyển đổi loại dữ liệu đó.

Loại dữ liệu Ví dụ về JSON Description Cuộc hội thoại ví dụ
Boolean { "bool": true } Boolean là một loại rõ ràng trong JSON và có thể được chuyển đổi trực tiếp. Boolean(ParseJSON("{ ""bool"": đúng }").bool )
Màu { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
Không có loại màu trong JSON. Các giá trị màu có thể được tạo từ số nguyên RGBA hoặc chuỗi thập lục phân. Giá trị màu(ParseJSON("{ ""màu"": ""#102030"" }" ).color )
Với( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( Giá trị( uo.r ), Giá trị( uo.g ), Giá trị( uo.b ), Giá trị( uo.a ) ) )
Đơn vị tiền tệ, Số { "numbervalue": 123.5 } Các số được biểu thị trực tiếp trong JSON với dấu chấm ( . ) làm dấu phân cách thập phân. Giá trị( ParseJSON("{ ""numbervalue"": 123,5 }").numbervalue )
Ngày, Ngày giờ và Giờ { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON không có loại ngày hoặc giờ nên chỉ có thể biểu thị ngày và giờ dưới dạng chuỗi. Một đối tượng chưa nhập có thể được chuyển đổi trực tiếp từ một chuỗi ở định dạng ISO 8601 thành ngày, giờ hoặc ngày giờ. Đối với các định dạng, trước tiên hãy chuyển đổi trường JSON thành văn bản bằng cách sử dụng hàm Text() rồi dùng hàm DateValue(), TimeValue() hoặc DateTimeValue() theo mặc định sẽ sử dụng ngôn ngữ trong thiết đặt của người dùng hiện tại. DateValue(ParseJSON("{ ""cuộc hẹn"": ""2022-05-10"" }").cuộc hẹn )
DateValue( Text( ParseJSON("{ ""cuộc hẹn"": ""Ngày 5 tháng 5 năm 2022"" }").cuộc hẹn ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON không có kiểu dữ liệu cho GUI nên chúng chỉ có thể được biểu diễn dưới dạng chuỗi. GUID(ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
Siêu liên kết, Hình ảnh, Phương tiện { "URI": "https://northwindtraders.com/logo.jpg" } Các loại dữ liệu này là loại dữ liệu văn bản và có thể được chuyển đổi thành văn bản và sau đó sử dụng trong Power Apps. Văn bản( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI )
Nhóm chọn { "status": 1 }
{ "status": "Closed" }
Các lựa chọn được trình bày dưới dạng chuỗi bản địa hóa, được hỗ trợ bởi số. Hàm JSON() tuần tự hóa một lựa chọn cho số nền của nó. Không có chuyển đổi trực tiếp từ số hoặc chuỗi thành lựa chọn, nhưng các hàm Switch() hoặc If() có thể được sử dụng trên giá trị văn bản hoặc số. Switch( Giá trị( ParseJSON( "{ ""trạng thái"": 1 }" ).status ), 0, Trạng thái.Mở, 1, Trạng thái.Đóng )
Bản ghi { "field": "value" } Không có chuyển đổi trực tiếp từ đối tượng JSON sang cấu trúc bản ghi nhưng có thể truy xuất các trường riêng lẻ từ đối tượng chưa nhập để tạo một bản ghi mới. { trường: Văn bản( ParseJSON( "{ ""trường"": ""giá trị"" }" ).trường) }
Tham chiếu bản ghi không áp dụng Tham chiếu bản ghi là duy nhất đối với nguồn dữ liệu và không thể được đánh số thứ tự hoặc không được đánh số thứ tự. Các giá trị trường đại diện cho các khóa duy nhất có thể được sử dụng trong JSON để xác định các bản ghi mà sau đó có thể tra cứu được. không áp dụng
Bảng [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON có thể chứa các mảng, có thể được chuyển đổi thành bảng. Những giá trị này có thể là mảng bản ghi hoặc mảng giá trị thực sự là bảng một cột. Mảng ParseJSON() chỉ có thể được chuyển đổi thành một bảng cột đơn gồm các đối tượng không có kiểu và có thể được sử dụng như vậy hoặc được chuyển đổi thành các bảng bản ghi có kiểu bằng cách sử dụng ForAll(). ForAll( Bảng( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Giá trị(ThisRecord.Value.id), tên: Văn bản(ThisRecord.Value.name) } )
Văn bản { "stringField": "this is text" } Văn bản là một loại rõ ràng trong JSON và có thể được chuyển đổi trực tiếp. Văn bản( ParseJSON( "{ ""stringField"": ""đây là văn bản"" }").stringField )
Hai tùy chọn { "available": true }
{ "available": "Yes" }
Hai lựa chọn được trình bày dưới dạng chuỗi bản địa hóa, được hỗ trợ bởi boolean. Hàm JSON() tuần tự hóa hai tùy chọn thành giá trị boolean của nó. Không có chuyển đổi trực tiếp từ boolean, số hoặc chuỗi thành hai lựa chọn, nhưng các hàm Switch() hoặc If() có thể được sử dụng trên giá trị văn bản hoặc số. Chuyển đổi( Boolean( ParseJSON( "{ ""có sẵn"": true }" ).available ), false, Availability.No, true, Có sẵn. Có)

Ví dụ

Truy cập vào các giá trị trường

Đưa ra chuỗi JSON sau trong một biến có tên JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. Công thức sau sẽ trả về văn bản text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. Công thức sau sẽ trả về số 567:
    Value( ParseJSON( JsonString ).number )
    

Trong trường hợp tên trường bao gồm tên định danh không hợp lệ, bạn có thể đặt tên trường trong dấu nháy đơn. Đưa ra chuỗi JSON sau trong một biến có tên JsonString

{ "0": { "child-field": "text value" } }
  1. Công thức sau sẽ trả về văn bản text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

Trống

Đưa ra chuỗi JSON sau trong một biến có tên JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. Cố gắng truy cập vào các trường không tồn tại sẽ trả về Blank(). Công thức sau sẽ trả về true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. Các giá trị JSON null được coi là Blank(). Công thức sau sẽ trả về true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

Mảng đơn giản

Đưa ra chuỗi JSON sau trong một biến có tên JsonString

{ "array": [1, 2, 3] }
  1. Truy cập số thứ hai trong bảng một cột của trường mảng của đối tượng chưa nhập và chuyển đổi thành một số bằng cách sử dụng Value() sẽ trả về 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. Chuyển đổi bảng một cột của đối tượng chưa nhập trong trường mảng thành bảng một cột gồm các số { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

Mảng của bản ghi

Đưa ra chuỗi JSON sau trong một biến có tên JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. Có thể thực hiện chuyển đổi trực tiếp thành bảng đã nhập của bản ghi với ForAll() bằng cách sử dụng ThisRecord.[fieldname] để truy cập đối tượng chưa nhập và chuyển đổi chúng thành các loại đã biết:

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

Mảng tới bảng

  1. Chuyển đổi đối tượng chưa nhập thành bảng bằng cách sử dụng hàm Table() sẽ tạo ra bảng một cột gồm các đối tượng chưa được nhập. Sau đó, đối tượng cần được truy cập bằng cách sử dụng cột (đơn) Value và được chuyển đổi thành các loại như đã giải thích trước đó.

Đưa ra chuỗi JSON sau trong một biến có tên JsonString

{ "array": [1, 2, 3] }

Table() trả về một bảng một cột gồm các đối tượng không có kiểu với một Giá trị một cột cho số trong mảng...

 Set(untypedTable, Table( ParseJSON( JsonString ).array );
 
 Value( Index(untypedTable, 1).Value.Value )
 ```

Given the following JSON string in a variable named `JsonString`
```JSON
{ "array": [
 { "id": 1, "name": "One"},
 { "id": 2, "name": "Two"}
 ] }

Table() trả về một bảng một cột gồm các đối tượng không có kiểu biểu diễn từng đối tượng json trong mảng.

  Set(untypedTable, Table( ParseJSON( JsonString ).array );
  
  Text( Index(untypedTable, 1).Value.name )