WEBVTT

1
00:00.080 --> 00:04.040
เราได้เพิ่มการพึ่งพาของไลบรารีตัวแปลง Json

2
00:04.040 --> 00:06.120
แต่ทำไมเราถึงต้องการตัวแปลงนี้? ตัวแปลง
Json

3
00:06.140 --> 00:09.740
เป็นส่วนประกอบของ retrofit.

4
00:09.770 --> 00:17.390
มันมีหน้าที่ในการแปลงข้อมูล Json
จากการตอบสนองของเครือข่ายเป็นวัตถุ Kotlin

5
00:17.390 --> 00:19.110
หรือ Java และในทางกลับกันใน retrofit

6
00:19.130 --> 00:24.740
โดยปกติแล้วคุณจะกำหนดค่าตัวแปลง Json
เป็นส่วนหนึ่งของอินสแตนซ์ retrofit ของคุณ

7
00:24.740 --> 00:31.370
ดังนั้น ตัวแปลง Json
จึงถูกใช้เพื่อแปลงอ็อบเจ็กต์ Java
ให้เป็นรูปแบบ Json ของมัน

8
00:31.370 --> 00:38.060
นอกจากนี้ยังสามารถใช้แปลงสตริง Json
ให้เป็นอ็อบเจ็กต์ Java ที่เทียบเท่ากันได้

9
00:38.090 --> 00:46.010
คิดถึงตัวแปลง Json
ที่ใช้สำหรับการแปลงข้อมูลเป็นลำดับและการแปลงข้อมูลกลับจากลำดับของคำตอบ
Json

10
00:46.040 --> 00:54.770
Json มีตัวแปลงข้อมูลแบบอนุกรม
(Serializers) และตัวแปลงข้อมูลแบบถอดอนุกรม
(Deserializers) ในตัวหลายตัว
ตัวแปลงข้อมูลแบบอนุกรมช่วยให้สามารถแปลงสตริง
Json

11
00:54.770 --> 01:04.130
เป็นประเภท Java ที่สอดคล้องกันได้
ส่วนตัวแปลงข้อมูลแบบถอดอนุกรมช่วยให้สามารถแปลงจาก
Java เป็นรูปแบบ Json ได้

12
01:04.130 --> 01:12.230
เราจะทำการส่งข้อมูลแบบต่อเนื่อง
(serialize) ในตอนแรก
เพราะเราจำเป็นต้องนำข้อมูลจาก Json

13
01:12.230 --> 01:13.550
มาแปลงเป็นวัตถุใน Kotlin หรือ Java

14
01:13.550 --> 01:16.220
กลับไปที่คลาสโมเดลคำถามของเรา

15
01:16.220 --> 01:21.620

เราใช้ชื่อที่จัดลำดับอนุกรมของคำอธิบายประกอบนี้และการเปิดเผยคำอธิบายประกอบนี้

16
01:21.620 --> 01:26.720
ก่อนอื่น
ขอให้ฉันพูดถึงชื่อซีเรียลและชื่อซีเรียล

17
01:26.720 --> 01:31.430
หมายเหตุคือหมายเหตุที่จัดเตรียมโดยไลบรารี
Json

18
01:31.430 --> 01:38.000
ใช้เพื่อแมปฟิลด์ของอ็อบเจ็กต์ Java หรือ
Kotlin กับชื่อคีย์หรือฟิลด์ในข้อมูล Json

19
01:38.000 --> 01:47.420
เมื่อคุณได้รับข้อมูล Json จาก API
เช่นการตอบกลับนี้

20
01:47.420 --> 01:51.830
คีย์ใน Json
อาจไม่ตรงกับชื่อตัวแปรที่คุณต้องการใช้ในคลาส
Java ของคุณเสมอไป

21
01:51.830 --> 01:55.730
ดังนั้น ตัวอย่างเช่น
ที่นี่เรามีคำถามที่เป็นข้อความ

22
01:55.730 --> 01:59.210
ถ้าฉันตั้งชื่อมันว่าเป็นเนื้อหาของคำถาม

23
01:59.240 --> 02:02.120
ตัวอย่างเช่น
นี่คือเนื้อหาของคำถามแบบตัวแปร

24
02:02.120 --> 02:07.220
ข้อความคำถามนี้ไม่ตรงกับคำถามหลัก

25
02:07.220 --> 02:16.490
ดังนั้น
การทำเครื่องหมายชื่อแบบอนุกรมจึงช่วยให้คุณสามารถระบุการแมประหว่างคีย์

26
02:16.490 --> 02:17.030
Json และฟิลด์ของออบเจ็กต์ได้

27
02:17.030 --> 02:25.190

ที่นี่ฉันกำลังบอกว่าเนื้อหาของคำถามนี้คล้ายกับคีย์คำถามในคำตอบของ
API

28
02:25.190 --> 02:35.510

คำแนะนำของฉันคือให้คุณสร้างชื่อตัวแปรให้เหมือนกับคีย์และคอลัมน์ในฐานข้อมูล

29
02:35.510 --> 02:41.690
ดังนั้นนี่คือคำถามสำคัญ ตัวเลือกที่หนึ่ง
ตัวเลือกที่สอง

30
02:41.690 --> 02:43.670
ตัวเลือกที่สาม ตัวเลือกที่สี่
และตัวเลือกที่ถูกต้องพร้อมขีดเส้นใต้สำหรับคำถามนั้น

31
02:43.670 --> 02:52.070
เพื่อป้องกันข้อผิดพลาดที่อาจเกิดขึ้น
ให้ใช้ชื่อตัวแปรเดียวกันกับชื่อคีย์

32
02:52.070 --> 02:58.010
คำถามนี้คล้ายกับคำถามข้อหนึ่ง
ตัวเลือกหนึ่งก็คล้ายกับตัวเลือกหนึ่ง
และต่อไปเช่นนี้

33
02:58.010 --> 03:04.910

ที่นี่ฉันต้องการให้คุณเน้นว่าตัวเลือกที่มีเส้นใต้แบบถูกต้องนั้นแตกต่างจากตัวเลือกที่ถูกต้อง

34
03:04.910 --> 03:09.710
ดังนั้น
การเพิ่มชื่อที่จัดลำดับควรเป็นคำอธิบายประกอบที่ควรเพิ่ม

35
03:09.710 --> 03:14.600
ตัวอย่างเช่น หากเราดูตัวเลือกที่สี่
จะคล้ายกับตัวเลือกสำหรับคีย์ที่นี่

36
03:14.600 --> 03:19.640
ดังนั้นตัวเลือกที่สี่
ฉันสามารถกำจัดคำอธิบายประกอบชื่อแบบอนุกรมได้

37
03:19.640 --> 03:26.060

ดังนั้นฉันสามารถลบชื่อที่ถูกจัดลำดับได้เพราะตัวเลือกที่สี่ตรงกับตัวเลือกสำหรับคีย์ในคำตอบของ
Json

38
03:26.060 --> 03:31.610

แต่ตัวเลือกที่ถูกต้องไม่ตรงกับตัวเลือกที่ถูกต้องที่นี่ในคีย์

39
03:31.610 --> 03:41.000

ดังนั้นฉันจำเป็นต้องเพิ่มที่กำกับชื่อที่จัดลำดับ

40
03:41.000 --> 03:41.840

และฉันจะระบุตัวเลือกที่ถูกต้องภายในที่กำกับชื่อที่จัดลำดับนั้น

41
03:41.840 --> 03:43.550
นี่คือสิ่งที่ฉันกำลังอ้างถึง

42
03:43.550 --> 03:50.540

ตัวเลือกที่ถูกต้องนี้ถูกเชื่อมโยงและแมปตัวแปรตัวเลือกที่ถูกต้องนี้กับคีย์นี้

43
03:50.540 --> 03:52.760
แก้ไขตัวเลือกปุ่มขีดล่างให้ถูกต้อง

44
03:52.790 --> 04:00.140
อีกครั้งนะครับทุกคน
เมื่อคุณมีตัวแปรที่คล้ายกัน
ไม่จำเป็นต้องใช้ชื่อที่ผ่านการซีเรียลไลซ์

45
04:03.190 --> 04:11.140

แต่เพื่อการนำไปใช้ที่ดีขึ้นและเพื่อระบุข้อผิดพลาดที่อาจเกิดขึ้น

46
04:11.140 --> 04:11.770
กรุณาเก็บชื่อและสัญลักษณ์ที่ถูกซีเรียลไว้

47
04:11.770 --> 04:15.040
ตอนนี้เรามาเพิ่ม เปิดเผย และสัญลักษณ์กัน

48
04:15.040 --> 04:22.870
การเพิ่ม, การเปิดเผย
และการบันทึกเป็นคำอธิบายประกอบ

49
04:22.870 --> 04:25.990
Json เช่นกัน
แต่จะใช้สำหรับการควบคุมพฤติกรรมของการแปลงข้อมูลฟิลด์เป็นลำดับและการแปลงกลับเป็นลำดับตามค่าเริ่มต้น

50
04:25.990 --> 04:33.340
เจสัน,
ทำการซีเรียลไลซ์และดีซีเรียลไลซ์ทุกฟิลด์ของคลาส
แต่หากคุณต้องการยกเว้นฟิลด์เฉพาะจากการซีเรียลไลซ์หรือดีซีเรียลไลซ์
คุณสามารถใช้

51
04:33.340 --> 04:39.070
Add expose annotation ได้

52
04:39.070 --> 04:44.440
ในการใช้ Add expose annotation
คุณจำเป็นต้องกำหนดค่าอินสแตนซ์

53
04:44.440 --> 04:51.460
Json ของคุณให้รองรับมัน
โดยการสร้างอินสแตนซ์ Json ด้วย

54
04:51.460 --> 04:52.060
Json builder
และกำหนดค่าให้มันยกเว้นฟิลด์ที่มี
annotation expose

55
04:52.060 --> 05:00.070

ดังนั้นฉันสามารถใช้การยกเว้นฟิลด์ด้วยจุดโดยไม่ต้องใช้เมธอด
Expose annotation ในตัวสร้าง Json

56
05:00.070 --> 05:06.580
ได้ แต่ฉันจะไม่ใช้มันในแอปพลิเคชันนี้
เพียงเพื่อแจ้งให้คุณทราบและบอกคุณเกี่ยวกับการเพิ่มเมธอด
annotation ชื่อ

57
05:06.580 --> 05:12.940
serialized และการเพิ่มเมธอด annotation
Expose
เพื่อให้คุณสามารถยกเว้นพวกมันจากการแปลงกลับหรือแปลงเป็นลำดับได้

58
05:12.940 --> 05:16.450
เราได้เรียนรู้เกี่ยวกับตัวแปลง Json นี้

59
05:16.450 --> 05:19.600
เราได้เรียนรู้เกี่ยวกับคำอธิบายประกอบ
expose และชื่อที่ถูกจัดลำดับ

60
05:19.600 --> 05:24.040

ตอนนี้เรามาสร้างชิ้นส่วนสำหรับการปรับปรุงใหม่ส่วนอื่นๆ
กัน


