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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
2, hệ thống sẽ tạo một đối tượng bao bọc public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
3 và lấy public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
4 từ nguồn tương ứng bằng cách gọi phương thức public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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ìnhNgoài ra, phương thức
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
6 trả về public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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 public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
9 ném public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
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ây
Mô 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ệu
Nó 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
Liên kết dữ liệu đơn giản chuyển đổi JSON sang và từ Bản đồ Java, Danh sách, Chuỗi, Số, Booleans và các đối tượng null
Ràng buộc dữ liệu đầy đủ chuyển đổi JSON sang và từ bất kỳ lớp Java nào
ObjectMapper
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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 ở public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
4Phương thức
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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à
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
8, ObjectMapper sẽ khớp nó với getter public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
9 và setter {"firstName":"Mark","lastName":"James","age":20}
0 trong POJOpublic class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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 public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
3 hoặc bằng cách sử dụng chú thích Jackson như chúng ta sẽ thấy sauPhụ thuộc Maven
Trướ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
{"firstName":"Mark","lastName":"James","age":20}
3, lần lượt bổ sung thêm {"firstName":"Mark","lastName":"James","age":20}
4 và {"firstName":"Mark","lastName":"James","age":20}
5{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
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 Jackson
Hã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 ObjectMapper
Hã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
{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
6Hãy bắt đầu bằng cách chuyển POJO thành chuỗi JSON
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
Chúng ta nên xem đây là đầu ra
{"firstName":"Mark","lastName":"James","age":20}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
3public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
5Tệp JSON dưới tài nguyên thử nghiệm
{"firstName":"Mark","lastName":"James","age":20}
8public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
3public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
4Tạo một POJO từ một mảng byte của JSON
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[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ó
{"firstName":"Mark","lastName":"James","age":20}
9public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
7{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
50Tạo bản đồ từ JSON
Chúng tôi có thể chọn phân tích cú pháp JSON thành Java
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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. public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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 đó{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
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ệ
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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 public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
03 của ObjectMapper thành falsepublic class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
04{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
52{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
05 và public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
06 cũ hơn. Chúng tôi chủ yếu quan tâm đến việc sử dụng lớp public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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ý
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
07{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
54Sau đó, chúng ta cần yêu cầu
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
3 tìm kiếm và đăng ký mô-đun mới mà chúng ta vừa thêm vào{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
55Hành vi mặc định cho Jackson sau đó là hiển thị ngày là
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
30 Vì vậy, đầu ra sẽ là public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
32{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
56{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
57Điều này sẽ xuất ra
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
34{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
58{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
59Chú thích của Jackson
Chú 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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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ích
Chú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
{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
60{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
61@JsonAnySetter
Chú 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
{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
62Tệp
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
36{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
63{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
64Viết chú thích
Chú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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
8, nhưng chúng tôi muốn tên JSON của nó là public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
38{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
65{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
66Điều này sẽ xuất ra
@JsonAnyGetter
Chú 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
{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
67{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
68Sau đó, điều này sẽ xuất ra
{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}
69Đọc/Ghi chú thích
Nhữ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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
0public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
1Điều này sẽ in ra
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
public class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
40 nàypublic class JacksonTest {
ObjectMapper objectMapper = new ObjectMapper[];
@Test
void pojoToJsonString[] throws JsonProcessingException {
Employee employee = new Employee["Mark", "James", 20];
String json = objectMapper.writeValueAsString[employee];
System.out.println[json];
}
}
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
Jackson là một trong những thư viện mạnh mẽ và phổ biến nhất để xử lý JSON trong Java
Jackson bao gồm ba mô-đun chính Streaming API, Tree Model và Data Binding
Jackson cung cấp một ObjectMapper có khả năng cấu hình cao để phù hợp với nhu cầu của chúng tôi thông qua việc thiết lập các thuộc tính của nó và cũng sử dụng các chú thích
Chúng tôi có thể tạo POJO bằng JavaScript không?
nguyên mẫu. Trực giác đằng sau POJO là POJO là một đối tượng chỉ chứa dữ liệu, trái ngược với các phương thức hoặc trạng thái bên trong. Hầu hết các cơ sở mã JavaScript coi các đối tượng được tạo bằng dấu ngoặc nhọn {} là POJO. Tuy nhiên, cơ sở mã nghiêm ngặt hơn đôi khi tạo POJO bằng cách gọi Object .JavaScript thực hành tốt nhất là gì?
Giới thiệu. Gọi mọi thứ theo tên của chúng — tên hàm và biến dễ đọc, ngắn gọn và dễ hiểu. Tránh toàn cầu. Bám sát một phong cách mã hóa nghiêm ngặt. Bình luận càng nhiều càng tốt nhưng không nhiều hơn.Làm cách nào để đạt được sự kế thừa trong JavaScript?
Để tạo kế thừa lớp, sử dụng từ khóa mở rộng .Chuỗi nguyên mẫu trong JavaScript là gì?
Chuỗi nguyên mẫu JavaScript . If an object tries to access the same property that is in the constructor function and the prototype object, the object takes the property from the constructor function.