2015-01-22 27 views
6

Tôi đang tìm thư viện Java có thể thay thế biến khi marshaling Json vào một đối tượng đang di chuyển.Trình giữ chỗ thay thế biến JSON

Ví dụ, mẫu Json sẽ có các trang web thay biến/placeholders như:

{ 
    "User": { 
    "Name": "${name}", 
    "Age": ${age} 
    } 
} 

đó sẽ dẫn đến việc đối tượng Java đại diện cho những sản phẩm sau khi marshaled:

{ 
    "User": { 
    "Name": "Elvis", 
    "Age": 80 
    } 
} 

Những gì tôi muốn là một cái gì đó dọc theo dòng này:

ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(new File("c:\\user.json.template"), User.class, "Elvis", 80); 
+1

https://github.com/typesafehub/config ?? –

+0

bạn cũng có thể sử dụng một thư viện ánh xạ đối tượng đơn giản, có thể cung cấp cho bạn định dạng đó từ một lớp như 'tên người dùng {String name; int age} ' – njzk2

Trả lời

0

Điều này thực sự nằm ngoài phạm vi của thư viện JSON, vì bản thân định dạng JSON không có hỗ trợ hoặc khái niệm thay thế biến. Đặt cược tốt nhất của bạn có thể là sử dụng một thư viện JSON (như Jackson) để có được một biểu diễn cây (đối với Jackson có thể là JsonNode), sau đó duyệt qua nó và sử dụng một thư viện khác để xử lý thay thế văn bản. Có nhiều người có thể làm điều đó, từ stringtemplate đến những người khác (có lẽ là MessageFormat mà câu trả lời khác đề cập đến).

Cũng có thể hoàn nguyên người khác, nếu thay thế của bạn sẽ không bao giờ buồn cười "nhân vật hài hước" (dấu ngoặc kép, linefeeds); nếu có, bạn có thể sử dụng chuỗi templating lib đầu tiên, JSON parser tiếp theo cho ăn văn bản đã xử lý. Nhưng nó có chút rủi ro hơn, như thường thì cuối cùng có một trường hợp mà bạn kết thúc cố gắng thêm dấu trích dẫn, và sau đó phân tích cú pháp không thành công.

Các vấn đề liên quan