Helpex - Trao đổi & giúp đỡ Đăng nhập

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.Chuyển đổi JSON sang XML bằng DataWeave

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ụ.Chuyển đổi JSON sang XML bằng DataWeave

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 đề DataWeaveChuyể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.Chuyển đổi JSON sang XML bằng DataWeave

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.Chuyển đổi JSON sang XML bằng DataWeave

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.Chuyển đổi JSON sang XML bằng DataWeave

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 đồChuyển đổi JSON sang XML bằng DataWeave

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átác giả như được hiển thị bên dưới.Chuyển đổi JSON sang XML bằng DataWeave

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.Chuyển đổi JSON sang XML bằng DataWeave

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áchChuyển đổi JSON sang XML bằng DataWeave

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.Chuyển đổi JSON sang XML bằng DataWeave

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.Chuyển đổi JSON sang XML bằng DataWeave

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.Chuyển đổi JSON sang XML bằng DataWeave

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ờ.Chuyển đổi JSON sang XML bằng DataWeave

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.Chuyển đổi JSON sang XML bằng DataWeave

Để 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.Chuyển đổi JSON sang XML bằng DataWeave

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 , orderBysizeOf trong DataWeave.

7 hữu ích 0 bình luận 21k xem chia sẻ

Có thể bạn quan tâm

loading