Thep Excel

Json.Documentแปลง JSON Text เป็น Power Query Record

Json.Document ใช้สำหรับแปลง JSON text หรือ binary data ให้เป็น Power Query record ทำให้คุณสามารถเข้าถึง field แต่ละตัวได้อย่างง่ายดาย

fx
= Json.Document(jsonText, [encoding])

ความนิยม8/10
ความยาก3/10
ประโยชน์9/10

อัปเดต 12 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
jsonText Text หรือ Binary JSON content ที่ต้องการแปลง อาจเป็น text string หรือ binary data จาก File.Contents หรือ Web.Contents
[encoding]ไม่บังคับ TextEncoding.Type TextEncoding.Utf8 Encoding ของ JSON document (เช่น TextEncoding.Utf8, TextEncoding.Utf16) ถ้าไม่ระบุ Power Query จะใช้ UTF-8 โดยอัตโนมัติ

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

Json.Document เป็นฟังก์ชั่นสำหรับแปลง JSON content ให้เป็น Power Query data structure (record หรือ list) ทำให้คุณสามารถทำงานกับ JSON data ได้ในลักษณะเดียวกับการทำงานกับตาราง

ที่เจ๋งคือ Json.Document ทำให้คุณไม่ต้องแยก JSON ด้วยตัวเองใช้ text functions หรือ regex อีกต่อไป แค่ pass JSON text เข้า Json.Document มันก็จะ handle ทั้งหมดให้ คุณจะได้ record สะอาดๆ พร้อมใช้งาน

ส่วนตัวผมใช้ Json.Document กับ Web.Contents เสมอเวลาที่ต้อง call REST API ที่ return JSON แบบนี้ Json.Document(Web.Contents(url)) ก็ได้ record พร้อมใช้แล้ว ข้อดีคือมันไม่ต้องพึ่ง external library ใดๆ ถือว่าสะดวกมาก 😎

Examples

ตัวอย่างพื้นฐาน: แปลง JSON Text เป็น Recordlet JsonText = "{\"name\": \"สมชาย\", \"age\": 28, \"city\": \"กรุงเทพ\"}", Parsed = Json.Document(JsonText) in Parsed

แปลง JSON string ให้เป็น Power Query record ที่สามารถเข้าถึงแต่ละ field ได้ (เช่น Parsed[name], Parsed[age])

fx
let
JsonText = "{\"name\": \"สมชาย\", \"age\": 28, \"city\": \"กรุงเทพ\"}",
Parsed = Json.Document(JsonText)
in
Parsed

ผลลัพธ์Record: [name = "สมชาย", age = 28, city = "กรุงเทพ"]
แปลง JSON Array เป็น Listlet JsonArray = "[{\"id\": 1, \"product\": \"Laptop\"}, {\"id\": 2, \"product\": \"Mouse\"}]", ParsedList = Json.Document(JsonArray), ConvertedTable = Table.Fro…

แปลง JSON array ให้เป็น list ของ record จากนั้นใช้ Table.FromList เพื่อแปลงเป็นตาราง

fx
let
JsonArray = "[{\"id\": 1, \"product\": \"Laptop\"}, {\"id\": 2, \"product\": \"Mouse\"}]",
ParsedList = Json.Document(JsonArray),
ConvertedTable = Table.FromList(ParsedList, Splitter.SplitByNothing(), {\"Data\"})
in
ConvertedTable

ผลลัพธ์ตาราง 2 แถว แต่ละแถวเป็น record ที่มี field id และ product
อ่าน JSON จากไฟล์ locallet JsonFile = File.Contents("C:\\Data\\Products.json"), Parsed = Json.Document(JsonFile) in Parsed

อ่านไฟล์ JSON จาก disk โดยใช้ File.Contents แล้วแปลง binary data เป็น Power Query record

fx
let
JsonFile = File.Contents("C:\\Data\\Products.json"),
Parsed = Json.Document(JsonFile)
in
Parsed

ผลลัพธ์Record หรือ List ที่มาจากไฟล์ Products.json
เรียก JSON จาก Web APIlet ApiUrl = "https://api.example.com/users", Response = Web.Contents(ApiUrl, [Headers=[#\"Authorization\"=\"Bearer token123\"]]), Parsed = Json.Document(Respon…

เรียก REST API ที่ return JSON ก่อน จากนั้นใช้ Json.Document แปลง JSON response เป็น Power Query record

fx
let
ApiUrl = "https://api.example.com/users",
Response = Web.Contents(ApiUrl, [Headers=[#\"Authorization\"=\"Bearer token123\"]]),
Parsed = Json.Document(Response),
UserTable = Table.FromList(Parsed, Splitter.SplitByNothing(), {\"User\"})
in
UserTable

ผลลัพธ์ตารางของ user records จาก API
ระบุ Encoding สำหรับ JSON ที่เป็น UTF-16let JsonBinary = File.Contents("C:\\Data\\Unicode.json"), Parsed = Json.Document(JsonBinary, TextEncoding.Utf16) in Parsed

กำหนด encoding อย่างชัดเจนเมื่อ JSON file ใช้ encoding ที่ไม่ใช่ UTF-8 เช่น UTF-16

fx
let
JsonBinary = File.Contents("C:\\Data\\Unicode.json"),
Parsed = Json.Document(JsonBinary, TextEncoding.Utf16)
in
Parsed

ผลลัพธ์Record ที่ parsed จาก JSON file ที่เข้ารหัสเป็น UTF-16

FAQs

Json.Document ต่างจาก Json.FromValue ยังไง?+

Json.Document คือการแปลง JSON text/binary เป็น record (parsing) ส่วน Json.FromValue คือการแปลง Power Query record/list เป็น JSON text (serializing) ตรงกันข้ามเลย

ถ้า JSON text มี error format จะเกิดอะไร?+

Power Query จะ throw error แล้วบอกว่าตำแหน่งไหนใน JSON ที่มี syntax error เช่น missing quote หรือ comma ที่ไม่ครบ ต้องแก้ JSON format ให้ถูกต้องก่อน

ใช้ Json.Document กับ API ที่ return nested JSON ได้ไหม?+

ได้เลย Json.Document จะ parse nested objects และ arrays ให้เป็น nested records และ lists ในภายหลังคุณสามารถใช้ record access syntax หรือ Table.ExpandRecordColumn เพื่อ expand nested data

Json.Document ต้องใช้ with Web.Contents หรือ File.Contents เสมอไหม?+

ไม่จำเป็น Json.Document สามารถรับ JSON text string โดยตรง หรือ binary data ก็ได้ ใช้กับ Web.Contents หรือ File.Contents เพราะว่ามันสะดวก แต่ถ้า JSON text อยู่ในคอลัมน์ของตาราง ก็สามารถ parse ได้เช่นเดียวกัน

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ Json.Document จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้Json.DocumentAccessing data functions
Accessing data functions (4)
Csv.Document

Csv.Document แปลงข้อมูลรูปแบบ CSV (Comma-Separated Values) ให้เป็นตารางข้อมูล (table) ใน Power Query โดยรองรับการกำหนดตัวแบ่งข้อมูล (delimiter), รหัสภาษา (encoding) และโครงสร้างคอลัมน์ (column structure) แบบต่างๆ ได้ตามความต้องการ function นี้สามารถแยกวิเคราะห์ทั้งข้อมูลแบบ binary content ที่ได้จาก File.Contents และข้อความแบบ text string ที่ได้จาก Web.Contents พร้อมจัดการข้อความที่ครอบด้วย quote ตามมาตรฐานสากล CSV standard เหมาะสมสำหรับการนำเข้าไฟล์ CSV จากระบบไฟล์ในเครื่อง (local), ที่อยู่เว็บไซต์ (URL) หรือการตอบกลับจาก API (API response) ที่มีตัวแบ่งข้อมูลแบบกำหนดเอง (custom delimiter), เนื้อหาภาษาต่างประเทศ หรือโครงสร้างพิเศษที่ต้องการการควบคุมเฉพาะ คืนค่าออกมาเป็นตารางที่ทุกคอลัมน์มีประเภทข้อมูลเป็นข้อความ (text type) ควรใช้ร่วมกับ Table.PromoteHeaders เพื่อยกแถวแรกขึ้นเป็นหัวตาราง และ Table.TransformColumnTypes เพื่อแปลงประเภทข้อมูลให้เหมาะสมกับการใช้งาน

File.Contents

File.Contents ใช้อ่านข้อมูล binary ของไฟล์จากพาธที่ระบุ เพื่อนำเข้าข้อมูลจากระบบไฟล์ลงในโปรแกรม

OData.Feed

OData.Feed เชื่อมต่อบริการ OData และดึงข้อมูลจาก OData endpoints ซึ่งมักจะเป็น API ที่มีโครงสร้างมาตรฐาน

Web.Contents

Web.Contents เป็นฟังก์ชันสำหรับดาวน์โหลดเนื้อหาจากเว็บไซต์หรือแหล่งข้อมูลบนอินเทอร์เน็ตผ่าน URL และคืนค่าเป็นข้อมูลแบบ binary data ที่สามารถนำไปประมวลผลต่อได้
.
รองรับการเชื่อมต่อและเรียกใช้งาน REST API อย่างครบถ้วนพร้อมระบบการยืนยันตัวตนผ่านทางตัวเลือกต่างๆ เช่น การกำหนดค่า Headers สำหรับส่งข้อมูลเพิ่มเติมในคำขอ การใช้ Query parameters สำหรับการกรองข้อมูลและส่งพารามิเตอร์ และการระบุ ApiKeyName เพื่อจัดเก็บคีย์การเข้าถึงอย่างปลอดภัย
.
เหมาะอย่างยิ่งสำหรับการเชื่อมต่อกับบริการเว็บและจุดเชื่อมต่อ API แบบไดนามิก โดยใช้ความสามารถของ RelativePath และตัวเลือก Query เพื่อสร้าง URL แบบยืดหยุ่นและทำให้กระบวนการรีเฟรชข้อมูลทำงานได้อย่างราบรื่นและมีประสิทธิภาพในระบบ Power BI Service

Binary functions (1)
Binary.Decompress

Binary.Decompress ยกเลิกการบีบอัดข้อมูลไบนารี่ที่ถูกบีบอัดด้วย GZip หรือ Deflate กลับเป็นข้อมูลต้นฉบับ

Text functions (1)
Json.FromValue

Json.FromValue ใช้สำหรับแปลงค่าใดๆ เป็นข้อความ JSON สามารถแปลง record, list, number, logical, null และข้อความได้

Table functions (1)
Table.FromRows

Table.FromRows สร้างตารางจาก List ของ List โดยแต่ละ List ย่อยแทนข้อมูลในแถวหนึ่ง คล้ายกับการ transpose ข้อมูลแบบแถว-คอลัมน์ แต่ทำให้เป็นตารางจริงในทันที

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่