Hàm pluck() trong DataWeave 2 là một hàm dùng để convert các thuộc tính và giá trị của các thuộc tính này của một đối tượng thành array của những thuộc tính, array của những giá trị và array của những index của các thuộc tính đó.
Cú pháp của hàm pluck() cơ bản sẽ là:
1 |
<input> pluck (value, key, index) -> <...> |
Trong đó, index là thứ tự của các thuộc tính của đối tượng input, key là tên của các thuộc tính của đối tượng và value là giá trị của các thuộc tính.
Ví dụ, mình có một đối tượng sinh viên với thuộc tính name có giá trị là “Khanh” và thuộc tính age có giá trị là 30, được hiển thị với mediaType application/xml có nội dung như sau:
1 2 3 4 |
<student> <name>Khanh</name> <age>30</age> </student> |
Để return array các thuộc tính của đối tượng sinh viên trên, mình sẽ sử dụng hàm pluck() như sau:
1 2 3 4 5 6 7 8 9 10 11 |
%dw 2.0 output application/xml var data = read("<student> <name>Khanh</name> <age>30</age> </student>", "application/xml") --- result: { key: data.student pluck (value, key, index) -> key } |
Kết quả:
Tương tự cho phần index và value:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
%dw 2.0 output application/xml var data = read("<student> <name>Khanh</name> <age>30</age> </student>", "application/xml") --- result: { index: data.student pluck (value, key, index) -> index, key: data.student pluck (value, key, index) -> key, value: data.student pluck (value, key, index) -> value } |
Kết quả:
Các bạn có thể sử dụng các ký tự $, $$ hoặc $$$ thay cho value, key và index theo thứ tự.
1 |
<input> pluck ($) |
cho value,
1 |
<input> pluck ($$) |
cho key và:
1 |
<input> pluck ($$$) |
cho index.
Nhờ đó, cách viết sau vẫn cho ra kết quả tương tự:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
%dw 2.0 output application/xml var data = read("<student> <name>Khanh</name> <age>30</age> </student>", "application/xml") --- result: { index: data.student pluck ($$$), key: data.student pluck ($$), value: data.student pluck ($) } |
Kết quả:
Với cách viết này, như các bạn thấy, chúng ta không cần khai báo rõ các tham số value, key hay index. DataWeave sẽ tự hiểu và cho ra kết quả tương tự.