แชร์ผ่าน


ฟังก์ชัน ParseJSON

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

ตีความสตริง JSON และส่งคืน ออบเจ็กต์ไม่ระบุชนิด

Description

ฟังก์ชัน ParseJSON จะแยกวิเคราะห์สตริง JSON ที่ถูกต้องและส่งคืน ออบเจ็กต์ไม่ระบุชนิด แสดงโครงสร้าง JSON

ฟังก์ชัน ParseJSON อาจส่งคืนข้อผิดพลาดหากข้อความไม่ใช่ JSON ที่ถูกต้องตามรูปแบบ JavaScript Object Notation (JSON) ที่อธิบายไว้ใน ECMA-404 และ IETF RFC 8259

ไวยากรณ์

ParseJSON( JSONString )

  • JSONString – จำเป็น โครงสร้าง JSON ที่แสดงเป็นข้อความ

การแปลงชนิดข้อมูลออบเจ็กต์ไม่ระบุชนิด

ParseJSON ส่งคืน ออบเจ็กต์ไม่ระบุชนิด ซึ่งต้องมีการแปลงค่าฟิลด์อย่างชัดเจนเป็นชนิดข้อมูลที่รองรับ ตารางต่อไปนี้แสดงรายการ ชนิดข้อมูล ใน Power Apps และชนิดข้อมูล JSON ที่เกี่ยวข้องและวิธีการแปลง

ชนิดข้อมูล ตัวอย่าง JSON Description ตัวอย่างการแปลง
Boolean { "bool": true } บูลีนเป็นชนิดที่ชัดเจนใน JSON และสามารถแปลงได้โดยตรง Boolean( ParseJSON("{ ""bool"": true }").bool )
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
ไม่มีชนิดสีใน JSON ค่าสีสามารถสร้างได้จากจำนวนเต็ม RGBA หรือสตริงเลขฐานสิบหก ColorValue( ParseJSON( "{ ""สี"": ""#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.a ) ) )
สกุลเงิน, ตัวเลข { "numbervalue": 123.5 } ตัวเลขจะแสดงโดยตรงใน JSON ที่มีจุด ( . ) เป็นตัวคั่นทศนิยม Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue )
วันที่, วันที่เวลา, เวลา { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
JSON ไม่มีชนิดวันที่หรือเวลา จึงสามารถแสดงวันที่และเวลาเป็นสตริงได้เท่านั้น ออบเจ็กต์ไม่ระบุชนิดสามารถแปลงได้โดยตรงจากสตริงในรูปแบบ ISO 8601 เป็นวันที่ เวลา หรือวันที่เวลา สำหรับรูปแบบอื่นๆ ให้แปลงฟิลด์ JSON เป็นข้อความก่อนโดยใช้ฟังก์ชัน Text() แล้วใช้ฟังก์ชัน DateValue(), TimeValue() หรือ DateTimeValue() ซึ่งโดยค่าเริ่มต้นจะใช้ภาษาของการตั้งค่าปัจจุบันของผู้ใช้ DateValue( ParseJSON("{ ""การนัดหมาย"": ""2022-05-10"" }").appointment )
DateValue( Text( ParseJSON("{ ""การนัดหมาย"": ""5 พฤษภาคม 2022"" }").appointment ) )
GUID { "id": "123e4567-e89b-12d3-a456-426655440000" } JSON ไม่มีชนิดข้อมูลสำหรับ GUID จึงสามารถแสดงเป็นสตริงได้เท่านั้น GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id )
ไฮเปอร์ลิงก์, รูปภาพ, สื่อ { "URI": "https://northwindtraders.com/logo.jpg" } ชนิดข้อมูลเหล่านี้เป็นชนิดข้อมูลข้อความและสามารถแปลงเป็นข้อความแล้วนำไปใช้ใน Power Apps Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"," }").URI )
ชุดตัวเลือก { "status": 1 }
{ "status": "Closed" }
ตัวเลือกนำเสนอเป็นสตริงที่แปลเป็นภาษาท้องถิ่นที่มีตัวเลขรองรับ ฟังก์ชัน JSON() ซีเรียลไลซ์ตัวเลือกให้เป็นหมายเลขสำรอง ไม่มีการแปลงโดยตรงจากตัวเลขหรือสตริงเป็นตัวเลือก แต่ฟังก์ชัน Switch() หรือ If() สามารถใช้กับค่าข้อความหรือตัวเลขได้ Switch( Value( ParseJSON( "{ ""สถานะ"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed )
เรกคอร์ด { "field": "value" } ไม่มีการแปลงโดยตรงจากออบเจ็กต์ JSON เป็นโครงสร้างเรกคอร์ด แต่สามารถดึงข้อมูลแต่ละฟิลด์ได้จาก ออบเจ็กต์ไม่ระบุชนิด เพื่อสร้างเรกคอร์ดได้ { field: Text( ParseJSON( "{ ""ฟิลด์"": ""ค่า"" }" ).field ) }
การอ้างอิงเรกคอร์ด ไม่มีข้อมูล การอ้างอิงเรกคอร์ดเป็นข้อมูลเฉพาะสำหรับแหล่งข้อมูล และไม่สามารถซีเรียลไลซ์หรือยกเลิกการซีเรียลไลซ์ ค่าฟิลด์ที่แสดงคีย์เฉพาะสามารถใช้ใน JSON เพื่อระบุเรกคอร์ดที่สามารถค้นหาได้ ไม่มีข้อมูล
Table [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
JSON สามารถมีอาร์เรย์ซึ่งสามารถแปลงเป็นตารางได้ ค่าเหล่านี้อาจเป็นอาร์เรย์ของเรกคอร์ด หรืออาร์เรย์ของค่าที่เป็นตารางแบบคอลัมน์เดียวได้อย่างมีประสิทธิภาพ อาร์เรย์ ParseJSON() สามารถแปลงเป็นตารางแบบคอลัมน์เดียวของ ออบเจ็กต์ไม่ระบุชนิด และสามารถใช้เป็นรูปแบบนั้นหรือแปลงเป็นตารางที่ระบุชนิดโดยใช้ ForAll() ForAll( Table( ParseJSON( "[ { ""id"": 1, ""ชื่อ"": ""หนึ่ง"" }, { ""id"": 2, ""ชื่อ"": ""สอง"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } )
ข้อความ { "stringField": "this is text" } ข้อความเป็นชนิดที่ชัดเจนใน JSON และสามารถแปลงได้โดยตรง Text( ParseJSON( "{ ""stringField"": ""นี่คือข้อความ"" }").stringField )
สองตัวเลือก { "available": true }
{ "available": "Yes" }
สองตัวเลือกนำเสนอเป็นสตริงที่แปลเป็นภาษาท้องถิ่นใน โดยมีบูลีนรองรับ ฟังก์ชัน JSON() ซีเรียลไลซ์สองตัวเลือกให้เป็นค่าแบบบูลีน ไม่มีการแปลงโดยตรงจากแบบบูลีน ตัวเลขหรือสตริงเป็นสองตัวเลือก แต่ฟังก์ชัน Switch() หรือ If() สามารถใช้กับค่าข้อความ ตัวเลข หรือค่าแบบบูลีนได้ Switch( Boolean( ParseJSON( "{ ""มีอยู่"": จริง }" ).available ), false, Availability.No, true, Availability.Yes )

ตัวอย่าง

การเข้าถึงค่าฟิลด์

รับสตริง JSON ต่อไปนี้ในตัวแปรที่ชื่อ JsonString

{ "parent": { "child": "text value" }, "number": 567 }
  1. สูตรต่อไปนี้ส่งคืนข้อความ text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. สูตรต่อไปนี้ส่งคืนตัวเลข 567:
    Value( ParseJSON( JsonString ).number )
    

ในกรณีที่ชื่อฟิลด์ประกอบด้วยชื่อตัวระบุที่ไม่ถูกต้อง คุณสามารถใส่ชื่อฟิลด์ในเครื่องหมายคำพูดเดี่ยว รับสตริง JSON ต่อไปนี้ในตัวแปรที่ชื่อ JsonString

{ "0": { "child-field": "text value" } }
  1. สูตรต่อไปนี้ส่งคืนข้อความ text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

ว่างเปล่า

รับสตริง JSON ต่อไปนี้ในตัวแปรที่ชื่อ JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. ความพยายามที่จะเข้าถึงฟิลด์ที่ไม่มีอยู่ส่งคืน Blank() สูตรต่อไปนี้ส่งคืน true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. ค่า null ของ JSON ถือว่าเป็น Blank() สูตรต่อไปนี้ส่งคืน true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

อาร์เรย์แบบง่าย

รับสตริง JSON ต่อไปนี้ในตัวแปรที่ชื่อ JsonString

{ "array": [1, 2, 3] }
  1. การเข้าถึงตัวเลขที่สองในตารางแบบคอลัมน์เดียว ออบเจ็กต์ไม่ระบุชนิด ของฟิลด์อาร์เรย์และแปลงเป็นตัวเลขโดยใช้ Value() ส่งคืนเป็น 2:
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. การแปลงตารางแบบคอลัมน์เดียวของ ออบเจ็กต์ไม่ระบุชนิด ในฟิลด์อาร์เรย์เป็นตารางแบบคอลัมน์เดียวของตัวเลข { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

อาร์เรย์ของเรกคอร์ด

รับสตริง JSON ต่อไปนี้ในตัวแปรที่ชื่อ JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. การแปลงเป็นตารางระบุชนิดโดยตรงด้วย ForAll() สามารถทำได้โดยใช้ ThisRecord.[fieldname] ในการเข้าถึงฟิลด์ ออบเจ็กต์ไม่ระบุชนิด และแปลงเป็นชนิดที่รู้จัก:

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

อาร์เรย์เป็นตาราง

  1. กำลังแปลง ออบเจ็กต์ไม่ระบุชนิด เป็นตารางโดยใช้ฟังก์ชัน Table() ผลลัพธ์ของฟังก์ชันในตารางแบบคอลัมน์เดียวของ ออบเจ็กต์ไม่ระบุชนิด วัตถุจะต้องเข้าถึงได้โดยใช้คอลัมน์ Value (เดียว) และแปลงเป็นชนิดตามที่อธิบายไว้ก่อนหน้านี้

รับสตริง JSON ต่อไปนี้ในตัวแปรที่ชื่อ JsonString

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

Table() ส่งคืนตารางแบบคอลัมน์เดียวของ ออบเจ็กต์ไม่ระบุชนิด ด้วยค่าคอลัมน์เดียวสำหรับตัวเลขในอาร์เรย์...

 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() ส่งคืนตารางแบบคอลัมน์เดียวของ ออบเจ็กต์ไม่ระบุชนิด ที่แสดงถึงวัตถุ json แต่ละรายการในอาร์เรย์

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