2013-07-08 28 views
24

Tôi đang sử dụng lược đồ json và chỉ muốn cho phép các thuộc tính được khai báo trong tệp này để vượt qua xác thực. Ví dụ, nếu một người dùng chuyển một thuộc tính "name" trong đối tượng json của họ thì nó sẽ thất bại lược đồ này vì "name" không được liệt kê ở đây như là một thuộc tính.Chỉ cho phép các thuộc tính được khai báo trong lược đồ JSON

Có một số chức năng tương tự như "bắt buộc" chỉ cho phép các thuộc tính được liệt kê vượt qua không?

{ 
"$schema": "http://json-schema.org/draft-04/schema#", 
"title": "Accounting Resource - Add Item", 
"type": "object", 
"properties": { 
    "itemNumber": { 
     "type":"string", 
     "minimum": 3 
    }, 
    "title": { 
     "type":"string", 
     "minimum": 5 
    }, 
    "description": { 
     "type":"string", 
     "minimum": 5 
    } 
}, 
"required": [ 
    "itemNumber", 
    "title", 
    "description" 
] 

}

+2

Thậm chí nếu có cách nào, điều này có vẻ như khả năng mở rộng trong tương lai ở chân. –

+5

Bất cứ lúc nào trong tương lai, tôi sẽ chỉ thêm các thuộc tính đó vào lược đồ này. – ipengineer

+1

@ipengineer - hoạt động (-ish) miễn là * bạn * là người đang mở rộng. Nó cũng có nghĩa là bạn thay đổi một nguồn tài nguyên mà một số người có thể giả định là tĩnh. – cloudfeet

Trả lời

3

FYI - có vẻ như v5 của tiêu chuẩn sẽ mô tả chế độ xác thực "ban unknown properties". Vì vậy, thay vì thực hiện yêu cầu này một phần của định dạng (như Chris Pitman nói trong các ý kiến, thiệt hại khả năng mở rộng trong tương lai), bạn chỉ có thể hướng dẫn validator để gắn cờ các thuộc tính không xác định là lỗi. Vì vậy, nó giống như một chế độ xác thực siêu nghiêm ngặt, hữu ích cho dev.

Một số xác nhận đã hỗ trợ này (ví dụ tv4):

var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties); 

Với công cụ này, checkRecursive nên được sử dụng nếu dữ liệu của bạn có thể có tham chiếu vòng tròn, và banUnknownProperties sẽ làm chính xác những gì bạn muốn, mà không cần phải để sử dụng "additionalProperties":false.

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