Chưa được phân loại, ESP8266, IOT

ARDUINO VỚI JSON V6 (PHẦN 2)

Xin chào các bạn, trong bài trước mình đã nói sơ qua về JD. Một số thao tác trên nó. Đây là cơ sở để chúng ta có thể tiếp cận với những thứ đơn giản hơn, thực tế hơn và dễ hiểu hơn. Có thể các bạn vẫn chưa hình dung được nó là gì đâu nhỉ… Và trong bài này mình sẽ hướng dẫn các bạn một số thao tác khác để có thể hiểu rõ hơn JD là gì.

1: deserializeJson(doc, str); Lệnh này sẽ ép chuỗi str thành JD, nếu str là kiểu chỉ đọc thì nó sẽ sao chép ra một bản mới để lưu trong doc, ngược lại thì JD sẽ trỏ đến str để thao tác.

Tham số:

doc: JsonDocument

str: kiểu chuổi bất kỳ (c_str, String…) và Stream.

Trả về:

DeserializationError: kiểu này sẽ báo cho chúng ta biết là quá trình ép kiểu có sảy ra lỗi gì hay không, mình sẽ nói về kiểu này sau. Tạm thời các bạn có thể bỏ qua cái này.

Ví dụ:

  • Đưa vào một chuỗi chỉ đọc:

Mình sẽ tạo một chuỗi bình thường, sau đó mình ép nó thành kiểu chỉ đọc để truyền vào cho deserializeJson() rồi tiếp theo mình in dữ liệu ra Serial (bằng serializeJsonPretty, cái này mình sẽ nói ở phần dưới )để xem kết quả như thế nào. Sau đó mình thay đổi giá trị của một phần từ của chuỗi gốc thì kết quả vẫn không đổi => chứng tỏ nó đã copy ra một bản sao rồi.

 

  • Đưa vào một chuỗi bình thường:

Tương tự như trên, nhưng mình không ép nó sang kiểu chỉ đọc mà mình truyền thẳng vào luôn thì kết quả là đây:

=> Chứng tỏ nó dùng luôn chuỗi gốc để lưu dữ liệu.

2: serializeJson(doc, str); Lệnh này sẽ chuyển nội dung dạng text của doc sang str; nội dung trong doc vẫn giữ nguyên.

Tham số:

doc: JsonDocument

str: kiểu chuổi bất kỳ (c_str, String…) và Stream.

Trả về:

số byte đã chuyển.

Ví dụ:

Chúng ta có thể chuyển doc sang String rồi in ra, hoặc có thể truyền cả Serial và cho nó tự in cũng được, kết quả là như nhau:

3: serializeJsonPretty(doc, str); Lệnh này tương tự như serializeJson(), nhưng nó sẽ bố trí thêm các ký tự xuống dòng, thụt đầu dòng cho trực quan hơn.

Ví dụ:

Kết quả:

4: measureJson(doc); Lệnh này sẽ trả về kích thước mà thao tác serializeJson() sẽ thực thi (chính là số byte mà nó sẽ chuyển đổi sang chuỗi), tức là nó sẽ cho ta biết trước lượng bộ nhớ để chuẩn bị trước.

Tham số:

doc: JsonDocument

Trả về:

số byte sẽ chuyển.

Ví dụ:

Kết quả:

5: measureJsonPretty(doc); Tương tự như measureJson(), nhưng lệnh này sẽ áp dụng cho serializeJsonPretty(), và tất nhiên kết quả sẽ lơn hơn measureJson() rồi, vì nó tính cả các ký tự xuống dòng, thụt dòng.

Tham số:

doc: JsonDocument

Trả về:

số byte sẽ chuyển.

Ví dụ:

Kết quả:

Mình có tham khảo nội dung tại trang chủ: https://arduinojson.org

 

 

còn tiếp…

 

Được gắn thẻ , , , , ,

Trả lời

Email của bạn sẽ không được hiển thị công khai.