หน้านี้แสดงสคีมาบันทึกสำหรับข้อมูล Crashlytics ที่ส่งออกและข้อมูลเซสชัน Firebase ใน Cloud Logging
สคีมาเซสชัน Firebase (หากเปิดใช้ข้อมูลเซสชันสําหรับการส่งออก)
สคีมา Crashlytics
Event
ข้อความที่อธิบายเหตุการณ์ Crashlytics รายการเดียว
การแสดงผลในรูปแบบ JSON
{
"name": string,
"platform": string,
"bundleOrPackage": string,
"eventId": string,
"sessionId": string,
"eventTime": string,
"receivedTime": string,
"issue": {
object (Issue)
},
"issueVariant": {
object (IssueVariant)
},
"device": {
object (Device)
},
"memory": {
object (Memory)
},
"storage": {
object (Storage)
},
"operatingSystem": {
object (OperatingSystem)
},
"browser": {
object (Browser)
},
"version": {
object (Version)
},
"user": {
object (User)
},
"customKeys": {
string: string,
...
},
"installationUuid": string,
"crashlyticsSdkVersion": string,
"appOrientation": string,
"deviceOrientation": string,
"logs": [
{
object (Log)
}
],
"breadcrumbs": [
{
object (Breadcrumb)
}
],
"blameFrame": {
object (Frame)
},
"exceptions": [
{
object (Exception)
}
],
"errors": [
{
object (Error)
}
],
"threads": [
{
object (Thread)
}
],
"processState": string,
"issueTitle": string,
"issueSubtitle": string,
"buildStamp": string,
"routePath": string
}
| ช่อง | คำอธิบาย |
|---|---|
name |
string
ต้องระบุ เอาต์พุตเท่านั้น
ไม่สามารถเปลี่ยนแปลงได้ ตัวระบุ ชื่อของทรัพยากรเหตุการณ์ รูปแบบ:
|
platform |
string
ANDROID, IOS หรือ WEB |
bundleOrPackage |
string
ชื่อแพ็กเกจสำหรับแอป iOS หรือชื่อแพ็กเกจของแอป Android
รูปแบบ: |
eventId |
string
เอาต์พุตเท่านั้น ไม่สามารถเปลี่ยนแปลงได้ ระบบจะกำหนดตัวระบุเหตุการณ์ที่ไม่ซ้ำกันในระหว่างการประมวลผล |
sessionId |
string
ตัวระบุที่ไม่ซ้ำกันสำหรับเซสชัน Firebase |
eventTime |
string (Timestamp format)
การประทับเวลาของอุปกรณ์ที่บันทึกเหตุการณ์ ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่าง: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
receivedTime |
string (Timestamp format)
การประทับเวลาของเซิร์ฟเวอร์ที่ Crashlytics ได้รับเหตุการณ์ ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่าง: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
state_update_time |
string (Timestamp format)
เวลาที่มีการเปลี่ยนแปลงสถานะของปัญหาครั้งล่าสุด ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่าง: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
first_seen_version |
string
display_version ของแอปแรกที่พบปัญหานี้ โดยจะป้อนข้อมูลสำหรับปัญหาบนอุปกรณ์เคลื่อนที่เท่านั้น |
last_seen_version |
string
display_version ของแอปล่าสุดที่พบปัญหานี้ ซึ่งสร้างขึ้นสำหรับปัญหาบนอุปกรณ์เคลื่อนที่เท่านั้น |
first_time_seen |
string (Timestamp format)
ครั้งแรกที่พบปัญหานี้ ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่าง: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
last_time_seen |
string (Timestamp format)
เวลาล่าสุดที่พบปัญหา ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่าง: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
issue |
object (Issue)
รายละเอียดของ [ปัญหา] ที่กำหนดให้กับ [เหตุการณ์] นี้ |
issueVariant |
object (IssueVariant)
รายละเอียดของ [IssueVariant] ที่กำหนดให้กับ [Event] นี้ |
device |
object (Device)
ข้อมูลเมตาของอุปกรณ์เคลื่อนที่ |
memory |
object (Memory)
การใช้งานหน่วยความจำของอุปกรณ์เคลื่อนที่ |
storage |
object (Storage)
การใช้งานดิสก์/แฟลชของอุปกรณ์เคลื่อนที่ |
operatingSystem |
object (OperatingSystem)
ระบบปฏิบัติการและเวอร์ชัน |
browser |
object (Browser)
เบราว์เซอร์และเวอร์ชัน |
version |
object (Version)
เวอร์ชันของแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ |
user |
object (User)
ตัวระบุผู้ใช้ปลายทางสำหรับเจ้าของอุปกรณ์ |
customKeys |
map (key: string, value: string)
คีย์ที่กำหนดเองซึ่งนักพัฒนาแอปตั้งค่าไว้ระหว่างเซสชัน ออบเจ็กต์ที่มีรายการคู่ "คีย์": ค่า ตัวอย่าง: { "name": "wrench", "mass": "1.3kg", "count": "3" } |
installationUuid |
string
ตัวระบุที่ไม่ซ้ำกันสำหรับการติดตั้งแอปจัดการอุปกรณ์ ระบบจะใช้ช่องนี้เพื่อคำนวณจำนวนผู้ใช้ที่ได้รับผลกระทบที่ไม่ซ้ำกัน |
crashlyticsSdkVersion |
string
เวอร์ชัน SDK ของ Crashlytics |
appOrientation |
string
การวางแนวของแอป ณ เวลาที่เกิดข้อขัดข้อง (แนวตั้งหรือแนวนอน) |
deviceOrientation |
string
การวางแนวอุปกรณ์ในขณะที่เกิดข้อขัดข้อง (แนวตั้งหรือแนวนอน) |
logs[] |
object (Log)
ข้อความในบันทึกที่นักพัฒนาแอปบันทึกไว้ระหว่างเซสชัน |
breadcrumbs[] |
object (Breadcrumb)
เหตุการณ์ Analytics ที่บันทึกโดย Analytics SDK ระหว่างเซสชัน |
blameFrame |
object (Frame)
เฟรมสแต็กเทรซที่การประมวลผล Crashlytics ระบุว่ามีปัญหา อาจไม่แสดงในเครื่องมือวิเคราะห์ในอนาคต |
exceptions[] |
object (Exception)
Android และเว็บเท่านั้น ข้อยกเว้นที่เกิดขึ้นระหว่างเหตุการณ์นี้ ข้อยกเว้นที่ซ้อนกันจะแสดงตามลำดับเวลาย้อนกลับ เพื่อให้ระเบียนสุดท้ายเป็นข้อยกเว้นแรกที่แสดงขึ้น |
errors[] |
object (Error)
Apple เท่านั้น ข้อผิดพลาดที่ไม่ร้ายแรงซึ่ง iOS SDK บันทึกไว้และ Stack Trace ของข้อผิดพลาดดังกล่าว |
threads[] |
object (Thread)
ชุดข้อความของแอปพลิเคชันที่แสดง ณ เวลาที่มีการบันทึกเหตุการณ์ แต่ละรายการจะมีสแต็กเทรซ ระบบจะระบุว่าชุดข้อความหนึ่งเป็นสาเหตุของข้อผิดพลาด |
processState |
string
สถานะของกระบวนการของแอป ณ เวลาที่เกิดเหตุการณ์ |
issueTitle |
string
ชื่อของปัญหาที่มีการจัดกลุ่มเหตุการณ์ ซึ่งโดยปกติจะเป็นไฟล์ต้นฉบับหรือชื่อเมธอด |
issueSubtitle |
string
ชื่อย่อยของปัญหาที่มีการจัดกลุ่มเหตุการณ์ ซึ่งมักจะเป็นสัญลักษณ์หรือข้อความแสดงข้อยกเว้น |
buildStamp |
string
ข้อมูลเมตาที่ได้จากระบบบิลด์ของแอป ซึ่งรวมถึงข้อมูลที่เก็บการควบคุมเวอร์ชัน |
routePath |
string
เว็บเท่านั้น เส้นทางของเว็บแอปพลิเคชันเมื่อเกิดเหตุการณ์ โดยไม่รวมพารามิเตอร์การค้นหาและส่วนย่อย |
Memory
การใช้งานหน่วยความจำของอุปกรณ์เคลื่อนที่
การแสดงผลในรูปแบบ JSON
{
"used": string,
"free": string
}
| ช่อง | คำอธิบาย |
|---|---|
used |
string (int64 format)
ไบต์ที่ใช้งานอยู่ |
free |
string (int64 format)
ไบต์ |
Storage
การใช้งานดิสก์/แฟลชของอุปกรณ์เคลื่อนที่ ไม่ได้รายงานสำหรับอุปกรณ์ทั้งหมด
การแสดงผลในรูปแบบ JSON
{
"used": string,
"free": string
}
| ช่อง | คำอธิบาย |
|---|---|
used |
string (int64 format)
ไบต์ที่ใช้ |
free |
string (int64 format)
ไบต์ |
User
ตัวระบุผู้ใช้ปลายทางที่นักพัฒนาแอปให้ไว้
การแสดงผลในรูปแบบ JSON
{
"id": string
}
| ช่อง | คำอธิบาย |
|---|---|
id |
string
รหัสผู้ใช้ หากนักพัฒนาแอปให้ไว้ |
Frame
เฟรมใน Stacktrace
การแสดงผลในรูปแบบ JSON
{
"line": string,
"file": string,
"symbol": string,
"offset": string,
"address": string,
"library": string,
"owner": string,
"blamed": boolean
}
| ช่อง | คำอธิบาย |
|---|---|
line |
string (int64 format)
หมายเลขบรรทัดในไฟล์ของเฟรม |
file |
string
ชื่อไฟล์ต้นฉบับที่พบเฟรม |
symbol |
string
สัญลักษณ์เฟรมหลังจากถอดรหัสซอร์สโค้ดที่สร้างความสับสนหรือแทนที่ด้วยสัญลักษณ์แล้ว สัญลักษณ์ดิบจากอุปกรณ์หากไม่สามารถเติมข้อมูลได้ |
offset |
string (int64 format)
ออฟเซ็ตไบต์ในอิมเมจไบนารีที่มีโค้ด แสดงสำหรับเฟรมเนทีฟ |
address |
string (int64 format)
ที่อยู่ในอิมเมจไบนารีซึ่งมีโค้ด แสดงสำหรับเฟรมเนทีฟ |
library |
string
ชื่อที่แสดงของคลังที่มีเฟรม |
owner |
string
DEVELOPER, VENDOR, RUNTIME, PLATFORM หรือ SYSTEM อย่างใดอย่างหนึ่ง |
blamed |
boolean
เป็นจริงเมื่อการวิเคราะห์ Crashlytics ระบุว่าเฟรมนี้มีแนวโน้มที่จะเป็นสาเหตุของข้อผิดพลาด |
Exception
ข้อยกเว้น Java หรือ Javascript และ Stacktrace เฉพาะจากแอป Android และเว็บแอปเท่านั้น
การแสดงผลในรูปแบบ JSON
{
"type": string,
"exceptionMessage": string,
"nested": boolean,
"title": string,
"subtitle": string,
"blamed": boolean,
"frames": [
{
object (Frame)
}
]
}
| ช่อง | คำอธิบาย |
|---|---|
type |
string
ประเภทข้อยกเว้น เช่น java.lang.IllegalStateException |
exceptionMessage |
string
ข้อความที่เชื่อมโยงกับข้อยกเว้น |
nested |
boolean
เป็นจริงสำหรับข้อยกเว้นทั้งหมด ยกเว้นข้อยกเว้นที่แสดงล่าสุด (เช่น ระเบียนแรก) |
title |
string
ชื่อของข้อยกเว้น |
subtitle |
string
คำบรรยายของข้อยกเว้น |
blamed |
boolean
เป็นจริงเมื่อการวิเคราะห์ Crashlytics ระบุว่าเทรดนี้เป็นจุดที่เกิดข้อผิดพลาด |
frames[] |
object (Frame)
เฟรมใน Stacktrace ของข้อยกเว้น |
Error
ข้อผิดพลาดที่ไม่ร้ายแรงและสแต็กเทรซของข้อผิดพลาดดังกล่าวจากแอป Apple เท่านั้น
การแสดงผลในรูปแบบ JSON
{
"queue": string,
"code": string,
"title": string,
"subtitle": string,
"blamed": boolean,
"frames": [
{
object (Frame)
}
]
}
| ช่อง | คำอธิบาย |
|---|---|
queue |
string
คิวที่ชุดข้อความทำงานอยู่ |
code |
string (int64 format)
รหัสข้อผิดพลาดที่เชื่อมโยงกับ NSError ที่บันทึกไว้ที่กำหนดเองของแอป |
title |
string
ชื่อข้อผิดพลาด |
subtitle |
string
คำบรรยายของข้อผิดพลาด |
blamed |
boolean
เป็นจริงเมื่อการวิเคราะห์ Crashlytics ระบุว่าสแต็กเทรซในข้อผิดพลาดนี้เป็นจุดที่เกิดข้อผิดพลาด |
frames[] |
object (Frame)
เฟรมในสแต็กเทรซของข้อผิดพลาด |
Thread
ชุดข้อความของแอปพลิเคชัน
JSON representation</code></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>{
"crashed": boolean,
"name": string,
"queue": string,
"signal": string,
"signalCode": string,
"crashAddress": string,
"title": string,
"subtitle": string,
"blamed": boolean,
"frames": [
{
object (Frame)
}
],
"threadId": string,
"sysThreadId": string,
"threadState": enum (State)
}
| ช่อง | คำอธิบาย |
|---|---|
crashed |
boolean
เป็นจริงเมื่อชุดข้อความขัดข้อง |
name |
string
ชื่อชุดข้อความ |
queue |
string
คิวที่ชุดข้อความทำงานอยู่ |
signal |
string
ชื่อสัญญาณที่ทำให้แอปขัดข้อง แสดงเฉพาะในเทรดเนทีฟที่ขัดข้อง |
signalCode |
string
โค้ดของสัญญาณที่ทำให้แอปขัดข้อง แสดงเฉพาะในเทรดเนทีฟที่ขัดข้อง |
crashAddress |
string (int64 format)
ที่อยู่ของสัญญาณที่ทำให้แอปพลิเคชันขัดข้อง จะแสดงเฉพาะในเทรดเนทีฟที่ขัดข้องเท่านั้น |
title |
string
ชื่อชุดข้อความ |
subtitle |
string
ชื่อรองของชุดข้อความ |
blamed |
boolean
เป็นจริงเมื่อการวิเคราะห์ Crashlytics ระบุว่า Stack Trace ในชุดข้อความนี้เป็นจุดที่เกิดข้อผิดพลาด |
frames[] |
object (Frame)
เฟรมใน Stacktrace ของชุดข้อความ |
threadId |
string (int64 format)
รหัสของชุดข้อความ ใช้ได้กับชุดข้อความ ANR เท่านั้น |
sysThreadId |
string (int64 format)
รหัสระบบของเทรด ซึ่งใช้ได้กับเทรด ANR เท่านั้น |
threadState |
enum (State)
เอาต์พุตเท่านั้น สถานะของเทรด ณ เวลาที่เกิด ANR |
State
สถานะของชุดข้อความเมื่อเกิด ANR
| enum | คำอธิบาย |
|---|---|
STATE_UNSPECIFIED |
ไม่ได้ระบุสถานะชุดข้อความ |
THREAD_STATE_TERMINATED |
สิ้นสุดชุดข้อความแล้ว |
THREAD_STATE_RUNNABLE |
ชุดข้อความทำงานได้ |
THREAD_STATE_TIMED_WAITING |
ชุดข้อความกำลังรอโดยมีการหมดเวลา |
THREAD_STATE_BLOCKED |
บล็อกชุดข้อความแล้ว |
THREAD_STATE_WAITING |
ชุดข้อความกำลังรออยู่ |
THREAD_STATE_NEW |
เริ่มชุดข้อความแล้ว แต่ยังไม่ได้เรียกใช้สิ่งใด |
THREAD_STATE_NATIVE_RUNNABLE |
เทรดเป็นแบบเนทีฟและเราไม่สามารถระบุตามหลักการเรียนรู้ของระบบได้ว่าเทรดกำลังรออยู่ จึงถือว่าเทรดทำงานได้ |
THREAD_STATE_NATIVE_WAITING |
เราใช้การวิเคราะห์พฤติกรรมเพื่อระบุว่าชุดข้อความกำลังรออยู่ |
สคีมาเซสชัน Firebase
FirebaseSessionEvent
เซสชันที่บันทึกโดย Firebase App Quality Sessions SDK
การแสดงผลในรูปแบบ JSON
{
"sessionId": string,
"eventType": enum (SessionEventType),
"firstSessionId": string,
"sessionIndex": integer,
"firebaseInstallationId": string,
"eventTime": string,
"version": {
object (Version)
},
"device": {
object (Device)
},
"operatingSystem": {
object (OperatingSystem)
}
}
| ช่อง | คำอธิบาย |
|---|---|
sessionId |
string
ตัวระบุที่ไม่ซ้ำกันสำหรับเซสชัน Firebase |
eventType |
enum (SessionEventType)
ประเภทเหตุการณ์ของเซสชัน ปัจจุบัน SDK รองรับเฉพาะเหตุการณ์ SESSION_START เท่านั้น |
firstSessionId |
string
ตัวระบุของเซสชันแรกนับตั้งแต่ Cold Start ครั้งล่าสุด รหัสนี้และ sessionId จะเหมือนกันสำหรับการเปิดแอป |
sessionIndex |
integer
ระบุจำนวนเซสชันนับตั้งแต่ Cold Start ครั้งล่าสุด |
firebaseInstallationId |
string
ระบุอุปกรณ์ที่ติดตั้งแอป Firebase แบบไม่ซ้ำกัน |
eventTime |
string (Timestamp format)
การประทับเวลาเริ่มต้นสำหรับเหตุการณ์เซสชัน ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่าง: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
version |
object (Version)
หมายเลขเวอร์ชันของแอปพลิเคชันบนอุปกรณ์เคลื่อนที่ |
device |
object (Device)
ข้อมูลเมตาของอุปกรณ์เคลื่อนที่ |
operatingSystem |
object (OperatingSystem)
ระบบปฏิบัติการและเวอร์ชัน |
SessionEventType
ประเภทของSessionEventที่บันทึกไว้
| enum | คำอธิบาย |
|---|---|
SESSION_EVENT_TYPE_UNKNOWN |
ไม่รู้จัก |
SESSION_START |
เริ่มเซสชันของแอปพลิเคชันแล้ว |
สคีมาบันทึกของอุปกรณ์
DeviceLog
แสดงโครงสร้างของรายการ deviceLog
การแสดงผลในรูปแบบ JSON
{
"eventId": string,
"sessionId": string,
// Union field payload can be only one of the following:
"log": {
object (Log)
},
"breadcrumb": {
object (Breadcrumb)
}
// End of list of possible types for union field payload.
}
| ช่อง | คำอธิบาย |
|---|---|
eventId |
string
เอาต์พุตเท่านั้น ไม่สามารถเปลี่ยนแปลงได้ ตัวระบุของเหตุการณ์ที่เชื่อมโยงกับเหตุการณ์นี้ |
sessionId |
string
ตัวระบุที่ไม่ซ้ำกันสำหรับเซสชัน Firebase |
ฟิลด์ Union |
|
log |
object (Log)
บันทึก Crashlytics |
breadcrumb |
object (Breadcrumb)
การแสดงเส้นทางของ Crashlytics |
Log
บรรทัดบันทึกที่นักพัฒนาแอปจัดเตรียมไว้ซึ่งบันทึกไว้ระหว่างเซสชัน
การแสดงผลในรูปแบบ JSON
{
"logTime": string,
"message": string
}
| ช่อง | คำอธิบาย |
|---|---|
logTime |
string (Timestamp format)
การประทับเวลาของอุปกรณ์เมื่อมีการบันทึกบรรทัด ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
message |
string
ข้อความในบันทึก |
Breadcrumb
เหตุการณ์ Analytics ที่บันทึกไว้ระหว่างเซสชัน
การแสดงผลในรูปแบบ JSON
{
"eventTime": string,
"title": string,
"params": {
string: string,
...
}
}
| ช่อง | คำอธิบาย |
|---|---|
eventTime |
string (Timestamp format)
การประทับเวลาของอุปกรณ์สำหรับเหตุการณ์ ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย ตัวอย่างเช่น "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" หรือ "2014-10-02T15:01:23+05:30" |
title |
string
ชื่อเหตุการณ์การวิเคราะห์ |
params |
map (key: string, value: string)
พารามิเตอร์เหตุการณ์ ออบเจ็กต์ที่มีรายการคู่ "คีย์": ค่า ตัวอย่าง: { "name": "wrench", "mass": "1.3kg", "count": "3" } |