Chuyển đổi JSON sang XML bằng DataWeave

Trong blog này, tôi sẽ giải thích cách chuyển đổi JSON sang XML bằng cách sử dụng DataWeave. Tôi sẽ đề cập đến việc sử dụng các biến và hàm. Tôi cũng sẽ chỉ ra việc sử dụng một vài toán tử trong DataWeave để đạt được kết quả đầu ra mong muốn.
Hãy lấy một ví dụ về một API trả về thông tin về sách trong JSON. Phần phụ trợ của tôi chỉ chấp nhận đầu vào XML. XML chứa tổng số sách. Sách được sắp xếp theo năm xuất bản. Giá cho một cuốn sách cụ thể chỉ được hiển thị nếu nó lớn hơn 30,00.
JSON đầu vào có định dạng sau:
[{
"title" : "Only Time Will Tell",
"author" : "Jeffrey Archer",
"year" : "2011",
"price" : "30.00"
}, {
"title" : "Private India: City on Fire",
"author" : "James Patterson",
"author" : "Ashwin Sanghi",
"year" : "2014",
"price" : "49.99"
}, {
"title" : "Harry Potter and the Goblet of Fire",
"author" : "J K. Rowling",
"year" : "2005",
"price" : "29.99"
}, {
"title" : "Twilight",
"author" : "Stephenie Meyer",
"year" : "2007",
"price" : "39.95"
}
]
XML đầu ra có định dạng sau:
<bks:bookstore xmlns:bks="http://example.com/bookstore">
<bks:totalBooks>4</bks:totalBooks>
<bk:book xmlns:bk="http://example.com/books" title="http://example.com/books/book?title='Harry Potter and the Goblet of Fire'">
<year>2005</year>
<author>J K. Rowling</author>
</bk:book>
<bk:book xmlns:bk="http://example.com/books" title="http://example.com/books/book?title='Twilight'">
<year>2007</year>
<price>39.95</price>
<author>Stephenie Meyer</author>
</bk:book>
<bk:book xmlns:bk="http://example.com/books" title="http://example.com/books/book?title='Only Time Will Tell'">
<year>2011</year>
<author>Jeffrey Archer</author>
</bk:book>
<bk:book xmlns:bk="http://example.com/books" title="http://example.com/books/book?title='Private India: City on Fire'">
<year>2014</year>
<price>49.99</price>
<author>James Patterson</author>
<author>Ashwin Sanghi</author>
</bk:book>
</bks:bookstore>
Để đạt được kết quả mong muốn, hãy thực hiện các bước sau.
1. Tạo một dự án mới trong Anypoint Studio
Sau đó, thêm Trình kết nối HTTP và định cấu hình nó. Cung cấp / hiệu sách dưới dạng Đường dẫn cơ sở trong Thuộc tính trình kết nối.
2. Thêm thành phần thông báo chuyển đổi (DataWeave)
Xác định siêu dữ liệu đầu vào và đầu ra bằng cách sử dụng các tệp JSON và XML ở trên làm ví dụ.
3. Xóa {} trong Phần Mã DataWeave
Chúng tôi làm điều này vì chúng tôi muốn xác định mã của riêng mình. Đừng lo lắng nếu có bất kỳ lỗi nào được hiển thị.
4. Xác định không gian tên trong Tiêu đề DataWeave![Chuyển đổi JSON sang XML bằng DataWeave]()
5. Xác định Yếu tố hiệu sách
Kiểm tra Xem trước để xem phần tử hiệu sách được tạo.
6. Nhập trọng tải trong Dấu ngoặc nhọn trong phần tử của hiệu sách
Chúng tôi gặp lỗi vì tải trọng đầu vào là một mảng và XML là một đối tượng.
7. Thêm dấu ngoặc nhọn xung quanh tải trọng
Điều này sẽ sửa chữa lỗi của chúng tôi. Trong Xem trước, tôi có thể thấy rằng các phần tử từ tất cả các cặp khóa-giá trị trong tải trọng được tạo.
8. Thêm không gian và sau đó bản đồ {} Sau khi tải trọng
Chúng tôi làm điều này vì chúng tôi muốn lặp qua tất cả các đối tượng trong đầu vào để tạo phần tử sách . Đối với điều này, chúng tôi sẽ phải sử dụng toán tử bản đồ .
9. Tạo sách Element Inside Curly Braces trong bản đồ
Đồng thời xác định các yếu tố năm , giá và tác giả như được hiển thị bên dưới.
10. Sử dụng Toán tử bản đồ trên phần tử tác giả
Trong Xem trước, tôi thấy rằng phần tử tác giả có giá trị Ashwin Sanghi không được tạo. Điều này là do có 2 cặp khóa-giá trị trong đối tượng thứ hai trong tải trọng. Vì vậy, nó nên được ánh xạ dưới dạng một mảng. Đối với điều này, hãy sử dụng toán tử bản đồ trên phần tử tác giả như được hiển thị bên dưới và như trong Bản xem trước, hai phần tử tác giả được tạo.
11. Xác định tiêu đề thuộc tính
Chúng tôi làm điều này vì chúng tôi muốn hiển thị tên sách như một thuộc tính của sách .
12. Xác định một biến với giá trị là một URL
Trong XML đầu ra, tiêu đề được hiển thị dưới dạng URL. Đối với điều này, chúng tôi sẽ xác định biến có giá trị là URL và sau đó sử dụng một hàm để thêm tiêu đề vào URL này, như được hiển thị bên dưới.
13. Thay đổi thuộc tính tiêu đề để sử dụng Hàm newUrl
Trong Bản xem trước, tôi có thể thấy rằng tên sách được tạo ở dạng URL.
14. Sử dụng khi Nhà điều hành để Kiểm tra Giá
Trong Xem trước, tôi có thể thấy rằng yếu tố giá không được tạo cho tất cả các sách. Nó chỉ được tạo nếu giá lớn hơn 30,00. Để xử lý điều này, hãy sử dụng toán tử when để kiểm tra giá như hình dưới đây.
15. Sử dụng lệnhBy Operator
Sách được sắp xếp theo năm trong XML đầu ra. Tôi có thể đạt được điều này bằng cách sử dụng toán tử orderBy và trong Xem trước, chúng ta có thể thấy rằng sách được sắp xếp theo năm ngay bây giờ.
16. Hiển thị Tổng số Sách trong Đầu ra
Chúng tôi cũng muốn hiển thị tổng số sách trong đầu ra. Sử dụng toán tử sizeOf cho việc này.
Để kiểm tra dự án này, trước tiên hãy chạy dự án trong Anypoint Studio. Khi dự án được triển khai thành công, hãy gửi JSON đầu vào làm đầu vào tới http: // localhost: 8081 / bookstore bằng Postman hoặc một số ứng dụng khách khác để gửi yêu cầu REST. Trong câu trả lời, tôi sẽ nhận được XML đầu ra mong muốn như được hiển thị bên dưới.
Tôi đã chỉ ra cách chuyển đổi JSON đầu vào thành XML đầu ra. Tôi cũng đã chỉ ra cách xác định không gian tên được sử dụng trong XML đầu ra. Ngoài ra, tôi đã chỉ ra cách chúng ta có thể khai báo các biến và hàm cũng như cách sử dụng các toán tử như map , when , orderBy và sizeOf trong DataWeave.
Có thể bạn quan tâm
