Các phương pháp hay nhất về JavaScript POJO
Bạn có thể chuyển nội dung nhị phân làm đối số đầu vào cho phương thức chú thích Java theo kiểu phát trực tuyến. Service Bus xử lý việc này bằng cách kiểm tra loại Java của đối số đầu vào. Nếu đối số thuộc loại 2, hệ thống sẽ tạo một đối tượng bao bọc 3 và lấy 4 từ nguồn tương ứng bằng cách gọi phương thức 5. Bạn có thể gọi phương thức này bao nhiêu lần tùy ý trong mã chú thích Java của mình Show
Ngoài ra, phương thức 6 trả về 7 trừ khi nội dung nhị phân là tệp đính kèm MIME được phân trang, trong trường hợp đó, giá trị của tiêu đề Kiểu nội dung của phần MIME tương ứng được sử dụng, nếu cóTương tự, phương thức 8 trả về giá trị chuỗi của thuộc tính tham chiếu nội dung nhị phân trừ khi nội dung nhị phân là tệp đính kèm MIME được phân trang, trong trường hợp đó, giá trị của tiêu đề Content-ID của phần MIME tương ứng được sử dụng, nếu có. Phương pháp 9 ném 0, theo yêu cầuSau khi hoàn thành, kết quả được chuyển đến đối số phương thức chú thích Java. Lưu ý rằng để diễn giải chính xác các octet nhị phân trong luồng đầu vào, phương thức chú thích Java cũng có thể yêu cầu giá trị của tiêu đề Mã hóa truyền nội dung (ví dụ: để xác định xem mã hóa có phải là nhị phân, 7 bit, 8 bit, v.v.). Bạn có thể chuyển tham số này dưới dạng một đối số riêng biệt, như minh họa trong phần sau $attachments/*:attachment[1]/*:Content-Transfer-Encoding/text() Lưu ý rằng nếu đối số đầu vào không phải là Nguồn dữ liệu, Bus dịch vụ sẽ chuyển đổi đối số thành mảng byte[] Hầu hết các trang web ngày nay trao đổi dữ liệu ở định dạng JSON. Máy chủ web, ứng dụng web và thiết bị di động, thậm chí cả thiết bị IoT đều giao tiếp với nhau bằng JSON. Do đó, một cách dễ dàng và linh hoạt để xử lý JSON là điều cần thiết để bất kỳ phần mềm nào tồn tại trong thế giới ngày nay Mã ví dụBài viết này được kèm theo một ví dụ mã làm việc trên GitHubJSON là gì?JSON là viết tắt của “Ký hiệu đối tượng JavaScript”, đây là định dạng dựa trên văn bản để biểu thị dữ liệu có cấu trúc dựa trên cú pháp đối tượng JavaScript. Định dạng năng động và đơn giản của nó khiến nó trở nên cực kỳ phổ biến. Về bản chất, nó tuân theo mô hình bản đồ khóa-giá trị cho phép các đối tượng và mảng lồng nhau
Jackson là gì?Jackson chủ yếu được biết đến như một thư viện chuyển đổi các chuỗi JSON và các Đối tượng Java cũ đơn giản (POJO). Nó cũng hỗ trợ nhiều định dạng dữ liệu khác như CSV, YML và XML Jackson được nhiều người ưa thích vì sự trưởng thành (13 tuổi) và khả năng tích hợp tuyệt vời với các framework phổ biến, chẳng hạn như Spring. Hơn nữa, đây là một dự án nguồn mở được phát triển và duy trì tích cực bởi một cộng đồng rộng lớn Dưới vỏ bọc, Jackson có ba gói cốt lõi Truyền phát, Databind và Chú thích. Với những điều đó, Jackson cung cấp cho chúng tôi ba cách để xử lý chuyển đổi JSON-POJO API truyền trực tuyếnĐó là cách tiếp cận nhanh nhất trong ba cách và là cách có ít chi phí nhất. Nó đọc và ghi nội dung JSON dưới dạng các sự kiện rời rạc. API cung cấp một JsonParser để đọc JSON thành POJO và một JsonGenerator ghi POJO vào JSON Mô Hình CâyMô hình cây tạo một biểu diễn cây trong bộ nhớ của tài liệu JSON. Một ObjectMapper chịu trách nhiệm xây dựng một cây các nút JsonNode. Đây là cách tiếp cận linh hoạt nhất vì nó cho phép chúng ta duyệt qua cây nút khi tài liệu JSON không ánh xạ tốt tới POJO Ràng buộc dữ liệuNó cho phép chúng tôi thực hiện chuyển đổi giữa POJO và tài liệu JSON bằng cách sử dụng trình truy cập thuộc tính hoặc sử dụng chú thích. Nó cung cấp hai loại ràng buộc
ObjectMapper 3 là phần được sử dụng phổ biến nhất trong thư viện Jackson vì đây là cách dễ dàng nhất để chuyển đổi giữa POJO và JSON. Nó sống ở 4Phương thức 5 được sử dụng để phân tích cú pháp (giải tuần tự hóa) JSON từ Chuỗi, Luồng hoặc Tệp thành POJOMặt khác, phương thức 6 được sử dụng để biến POJO thành JSON (tuần tự hóa)Cách thức hoạt động của 3 để tìm ra trường JSON nào ánh xạ tới trường POJO nào bằng cách khớp tên của các trường JSON với tên của các phương thức getter và setter trong POJOĐiều đó được thực hiện bằng cách loại bỏ các phần “get” và “set” trong tên của các phương thức getter và setter và chuyển đổi ký tự đầu tiên của tên phương thức còn lại thành chữ thường Ví dụ: giả sử chúng ta có một trường JSON có tên là 8, ObjectMapper sẽ khớp nó với getter 9 và setter 0 trong POJO 3 có thể định cấu hình và chúng tôi có thể tùy chỉnh nó theo nhu cầu của mình trực tiếp từ phiên bản 3 hoặc bằng cách sử dụng chú thích Jackson như chúng ta sẽ thấy sauPhụ thuộc MavenTrước khi chúng tôi bắt đầu xem xét mã, chúng tôi cần thêm phụ thuộc Jackson Maven 3, lần lượt bổ sung thêm 4 và 5 5Chúng tôi cũng đang sử dụng Lombok để xử lý mã soạn sẵn cho getters, setters và constructor Tuần tự hóa và giải tuần tự hóa JSON cơ bản với JacksonHãy xem qua các trường hợp sử dụng quan trọng nhất của Jackson với các ví dụ về mã Chuyển đổi POJO / JSON cơ bản bằng ObjectMapperHãy bắt đầu bằng cách giới thiệu một POJO đơn giản có tên là Nhân viên 6Hãy bắt đầu bằng cách chuyển POJO thành chuỗi JSON
Chúng ta nên xem đây là đầu ra
Bây giờ, hãy xem chuyển đổi một chuỗi JSON thành một đối tượng Nhân viên bằng cách sử dụng 3 0ObjectMapper cũng cung cấp một API phong phú để đọc JSON từ các nguồn khác nhau thành các định dạng khác nhau, hãy kiểm tra những cái quan trọng nhất Tạo POJO từ tệp JSONĐiều này được thực hiện bằng phương pháp 5Tệp JSON dưới tài nguyên thử nghiệm 8 3 4Tạo một POJO từ một mảng byte của JSON 5Tạo danh sách POJO từ JSONĐôi khi tài liệu JSON không phải là một đối tượng mà là một danh sách các đối tượng. Hãy xem làm thế nào chúng ta có thể đọc nó 9 7 50Tạo bản đồ từ JSONChúng tôi có thể chọn phân tích cú pháp JSON thành Java 00, điều này rất thuận tiện nếu chúng tôi không biết điều gì sẽ xảy ra từ tệp JSON mà chúng tôi đang cố phân tích cú pháp. 3 sẽ biến tên của từng biến trong JSON thành khóa Bản đồ và giá trị của biến đó thành giá trị của khóa đó 51Đôi khi, JSON mà chúng tôi mong đợi có thể có một số trường bổ sung không được xác định trong POJO của chúng tôi. Hành vi mặc định của Jackson là ném một ngoại lệ 02 trong những trường hợp như vậy. Tuy nhiên, chúng ta có thể nói với Jackson rằng đừng căng thẳng về những lĩnh vực chưa biết và chỉ cần bỏ qua chúng. Điều này được thực hiện bằng cách cấu hình 03 của ObjectMapper thành false 04 52 53Chuyển đổi ngày có thể phức tạp vì chúng có thể được biểu diễn bằng nhiều định dạng và mức độ đặc tả (giây, mili giây, v.v. ) Trước khi nói về chuyển đổi Jackson và Date, chúng ta cần nói về API Date mới do Java 8 cung cấp. Nó được giới thiệu để giải quyết những thiếu sót của 05 và 06 cũ hơn. Chúng tôi chủ yếu quan tâm đến việc sử dụng lớp 07 cung cấp một cách hiệu quả để diễn đạt ngày và giờĐể làm được điều đó, chúng ta cần thêm một mô-đun bổ sung vào Jackson để nó có thể xử lý 07 54Sau đó, chúng ta cần yêu cầu 3 tìm kiếm và đăng ký mô-đun mới mà chúng ta vừa thêm vào 55Hành vi mặc định cho Jackson sau đó là hiển thị ngày là 30 Vì vậy, đầu ra sẽ là 31Tuy nhiên, chúng ta có thể nói cho Jackson biết chúng ta muốn ngày tháng ở định dạng nào. Điều này có thể được thực hiện bằng cách sử dụng chú thích 32 56 57Điều này sẽ xuất ra 33Chúng ta có thể sử dụng cấu hình tương tự ở trên để đọc trường JSON thành một ngày 34 58 59Chú thích của JacksonChú thích trong Jackson đóng vai trò chính trong việc tùy chỉnh cách thức diễn ra quá trình chuyển đổi JSON/POJO. Chúng tôi đã thấy một ví dụ về nó với chuyển đổi ngày mà chúng tôi đã sử dụng chú thích 32. Chú thích chủ yếu ảnh hưởng đến cách dữ liệu được đọc, ghi hoặc thậm chí cả hai. Hãy cùng khám phá một số chú thích đó dựa trên danh mục của chúngđọc chú thíchChúng ảnh hưởng đến cách Jackson chuyển đổi JSON thành POJO @JsonSetterĐiều này hữu ích khi chúng tôi muốn khớp một trường trong chuỗi JSON với một trường trong POJO nơi tên của chúng không khớp 60 61@JsonAnySetterChú thích này hữu ích cho các trường hợp JSON chứa một số trường không được khai báo trong POJO. Nó được sử dụng với một phương thức setter được gọi cho mọi trường không được nhận dạng 62Tệp 36 63 64Viết chú thíchChúng ảnh hưởng đến cách Jackson chuyển đổi POJO thành JSON @JsonGetterĐiều này hữu ích khi chúng tôi muốn ánh xạ trường POJO sang trường JSON bằng một tên khác. Ví dụ: giả sử chúng tôi có lớp Cat này với trường 8, nhưng chúng tôi muốn tên JSON của nó là 38 65 66Điều này sẽ xuất ra @JsonAnyGetterChú thích này cho phép chúng ta coi một đối tượng Bản đồ là nguồn của các thuộc tính JSON. Giả sử chúng ta có bản đồ này dưới dạng một trường trong lớp Cat 67 68Sau đó, điều này sẽ xuất ra 69Đọc/Ghi chú thíchNhững chú thích đó ảnh hưởng đến cả việc đọc và viết JSON Tệp được chú thích bị bỏ qua trong khi viết và đọc JSON 0 1Điều này sẽ in ra 39Điều tương tự cũng áp dụng cho việc đọc vào POJO Giả sử chúng tôi có tệp 40 này 2Jackson có nhiều chú thích hữu ích hơn cho phép chúng tôi kiểm soát nhiều hơn quá trình tuần tự hóa/giải tuần tự hóa. Danh sách đầy đủ của chúng có thể được tìm thấy trên kho lưu trữ Github của Jackson Tóm lược
|