Lưu ý: Tôi đang sao chép câu hỏi này từ circe Gitter channel vì mục đích của hậu thế.Chuyển đổi JSON với trạng thái trong circe
Giả sử chúng ta muốn dịch tài liệu JSON này:
{
"places": [{
"id": "dadcc0d9-0615-4e46-9df4-2619f49930a0"
}, {
"id": "21d02f4b-7e88-47d7-bf2b-48e50761b6c3"
}],
"transitions": [{
"id": "10a3aee5-541b-4d04-bb45-cb1dbbfe2128",
"startPlaceId": "dadcc0d9-0615-4e46-9df4-2619f49930a0",
"endPlaceId": "21d02f4b-7e88-47d7-bf2b-48e50761b6c3"
}],
"routes": [{
"id": "6ded1763-86c0-44ce-b94b-f05934976a3b",
"transitionId": "10a3aee5-541b-4d04-bb45-cb1dbbfe2128"
}]
}
Into này:
{
"places": [{
"id": "1"
}, {
"id": "2"
}],
"transitions": [{
"id": "3",
"startPlaceId": "ref:1",
"endPlaceId": "ref:2"
}],
"routes": [{
"id": "4",
"transitionId": "ref:3"
}]
}
Ie, chúng tôi muốn thay thế các UUID trong mỗi id
với một định danh số tăng lên đơn giản, và để thay thế tất cả các tham chiếu đến từng UUID bằng tham chiếu đến các số nhận dạng mới.
Làm cách nào chúng tôi có thể thực hiện việc này với circe?
Có thể 'ids.updated (uuid, next)' được thay thế bằng 'ids + (uuid -> next)'? –
@ Łukasz Có, nhưng tôi thấy 'cập nhật' rõ ràng hơn một chút, vì nó không yêu cầu tạo ra một bộ dữ liệu rõ ràng và vì sẽ luôn chỉ có một cặp khóa-giá trị mà chúng tôi đang thêm vào đó. –
Được rồi, cảm ơn vì đã giải thích. Tôi thấy nó hơi khó hiểu vì điều này cũng sẽ cho phép thay thế giá trị hiện tại nhưng điều đó sẽ không bao giờ xảy ra và ý định của bạn là chèn một phần tử mới, nhưng bây giờ tôi cũng có thể thấy lợi thế của cách tiếp cận của bạn. –