Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Áp dụng cho: Ứng dụng Canvas Copilot Studio Dựa
trên mô hình ứng dụng
Power Platform CLI Chức năng
dataverse
Power Pages
Diễn giải một chuỗi JSON và trả về một giá trị Động hoặc một giá trị được nhập cụ thể nếu một kiểu được cung cấp.
Quan trọng
- Sử dụng đối số thứ hai để ParseJSON chuyển đổi thành đối tượng đã nhập là một tính năng thử nghiệm.
- Các tính năng thử nghiệm không được dùng cho sản xuất và có thể có chức năng bị hạn chế. Các tính năng này sẽ khả dụng trước khi phát hành chính thức để bạn có thể truy cập sớm và cung cấp phản hồi. Thông tin thêm: Tìm hiểu các tính năng thử nghiệm, xem trước và ngừng cung cấp trong ứng dụng canvas
- Hành vi mà bài viết này mô tả chỉ khả dụng khi tính năng Kiểu do người dùng xác định thử nghiệm trong Cài đặt > Tính năng sắp ra mắt > Thử nghiệm được bật (theo mặc định là tắt).
- Phản hồi của bạn rất có giá trị với chúng tôi. Vui lòng cho chúng tôi biết suy nghĩ của bạn trong Power Apps diễn đàn cộng đồng tính năng thử nghiệm.
Description
Hàm ParseJSON phân tích chuỗi JSON hợp lệ và trả về giá trị Động đại diện cho cấu trúc JSON.
Tùy chọn, sử dụng đối số thứ hai để chuyển đổi JSON thành đối tượng được gõ có thể được sử dụng trực tiếp trong Power Fx công thức. Điều này giúp cho kết quả dễ sử dụng hơn vì không còn cần phải chuyển đổi và ép buộc tại thời điểm sử dụng nữa. JSON không có kiểu được ánh xạ tới kiểu theo các quy tắc sau:
- Các cột có kiểu dữ liệu không có trong JSON sẽ được điền vào khoảng trống.
- Các cột trong JSON không có trong kiểu sẽ bị bỏ qua.
- Đối với các cột vừa có kiểu dữ liệu vừa có kiểu dữ liệu JSON, giá trị JSON phải có thể áp dụng được cho kiểu dữ liệu đó.
Hàm ParseJSON có thể trả về lỗi nếu văn bản không hợp lệ JSON theo định dạng Ký hiệu Đối tượng JavaScript (JSON) được mô tả trong ECMA-404 và IETF RFC 8259.
Cú pháp
ParseJSON( JSONString [ , Loại ] )
- JSONString – Bắt buộc. Cấu trúc JSON được biểu diễn dưới dạng văn bản.
- Loại - Tùy chọn. Định nghĩa kiểu cho cấu trúc JSON. Power Fx Không có đối số này, ParseJSON trả về giá trị động; với nó, hàm trả về một giá trị được nhập cụ thể.
Chuyển đổi giá trị Động
Không có đối số thứ hai, trả ParseJSON về giá trị Dynamic yêu cầu chuyển đổi rõ ràng các giá trị trường trong các kiểu 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"": true }").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. |
ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0,5 }" ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.b ) ) ) |
| Đơ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. | Value( 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 giá trị động có thể được chuyển đổi trực tiếp từ một chuỗi ở định dạng ISO 8601 sang 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("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) |
| 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. | Text( 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( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| 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 bạn có thể truy xuất các trường riêng lẻ từ giá trị Dynamic để tạo bản ghi. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| 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. ParseJSON() mảng chỉ có thể được chuyển đổi thành một bảng cột giá trị Động và có thể được sử dụng như vậy hoặc chuyển đổi thành bảng bản ghi đã nhập bằng cách sử dụng ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(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. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").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ố. | Switch( Boolean( ParseJSON( " { ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
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 }
- Công thức sau sẽ trả về văn bản
text value:Text( ParseJSON( JsonString ).parent.child ) - 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" } }
- 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 }
- 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 ) ) - 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] }
- Truy nhập số thứ hai trong bảng một cột giá trị Động của trường mảng và chuyển đổi thành số bằng cách sử dụng Value() trả về
2:Value( Index( ParseJSON( JsonString ).array, 2 ) ) - Chuyển đổi bảng một cột chứa các giá trị động trong trường mảng, thành một bảng số cột duy nhất
{ 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"}
] }
Chuyển đổi thành bảng bản ghi đã nhập trực tiếp bằng ForAll()
ThisRecord.[fieldname]có thể được thực hiện bằng cách sử dụng để truy nhập các trường động và chuyển đổi chúng thành các loại cụ thể:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
Mảng tới bảng
- Việc chuyển đổi các giá trị động thành bảng bằng cách sử dụng hàm Table() sẽ dẫn đến bảng đơn cột chứa các giá trị động . Sau đó, đối tượng cần được truy cập bằng cách sử dụng cột (đơn)
Valuevà đượ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ề bảng một cột chứa các giá trị động với một cột đơn Giá trị 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ề bảng một cột chứa các giá trị động đại diện cho từng đối tượng json trong mảng.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )