Thep Excel

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

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

= Json.Document(jsonText, optional encoding)

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
8/10

Difficulty
3/10

Usefulness
9/10

Syntax & Arguments

= Json.Document(jsonText, optional encoding)

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

Examples

ตัวอย่างพื้นฐาน: แปลง JSON Text เป็น Record
let JsonText = "{\"name\": \"สมชาย\", \"age\": 28, \"city\": \"กรุงเทพ\"}", Parsed = Json.Document(JsonText) in Parsed
แปลง JSON string ให้เป็น Power Query record ที่สามารถเข้าถึงแต่ละ field ได้ (เช่น Parsed[name], Parsed[age])
Power Query Formula:

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

Result:

Record: [name = "สมชาย", age = 28, city = "กรุงเทพ"]

แปลง JSON Array เป็น List
let JsonArray = "[{\"id\": 1, \"product\": \"Laptop\"}, {\"id\": 2, \"product\": \"Mouse\"}]", ParsedList = Json.Document(JsonArray), ConvertedTable = Table.Fro…
แปลง JSON array ให้เป็น list ของ record จากนั้นใช้ Table.FromList เพื่อแปลงเป็นตาราง
Power Query Formula:

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

Result:

ตาราง 2 แถว แต่ละแถวเป็น record ที่มี field id และ product

อ่าน JSON จากไฟล์ local
let JsonFile = File.Contents("C:\\Data\\Products.json"), Parsed = Json.Document(JsonFile) in Parsed
อ่านไฟล์ JSON จาก disk โดยใช้ File.Contents แล้วแปลง binary data เป็น Power Query record
Power Query Formula:

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

Result:

Record หรือ List ที่มาจากไฟล์ Products.json

เรียก JSON จาก Web API
let 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
Power Query Formula:

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

Result:

ตารางของ user records จาก API

ระบุ Encoding สำหรับ JSON ที่เป็น UTF-16
let JsonBinary = File.Contents("C:\\Data\\Unicode.json"), Parsed = Json.Document(JsonBinary, TextEncoding.Utf16) in Parsed
กำหนด encoding อย่างชัดเจนเมื่อ JSON file ใช้ encoding ที่ไม่ใช่ UTF-8 เช่น UTF-16
Power Query Formula:

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

Result:

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

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 ใดๆ ถือว่าสะดวกมาก 😎

Leave a Reply

Your email address will not be published. Required fields are marked *