2013-05-09 34 views
20

Liên kết với các đặc điểm kỹ thuật: http://json-schema.org/latest/json-schema-validation.html#anchor64Hiểu "additionalProperties" từ khóa trong JSON Schema dự thảo phiên bản 4

Mục 5.4.4.2 trạng thái:

xác nhận thành công của một trường hợp đối tượng chống lại ba từ khóa phụ thuộc vào giá trị của "additionalProperties": nếu giá trị của nó là boolean true hoặc một lược đồ, xác thực thành công; ...

Mục 5.4.4.3 trạng thái:

Nếu "additionalProperties" vắng mặt, nó có thể được coi là biểu hiện với schema rỗng như một giá trị.

Ok, vì vậy nếu "additionalProperties" vắng mặt, nó được tính là có mặt với lược đồ trống. Và nếu đó là một lược đồ (dưới bất kỳ hình thức nào), thì đối tượng xác nhận thành công bất chấp việc xem xét khác.

Nhưng điều này mâu thuẫn với sự khẳng định trong phần 5.4.4.5, "Ví dụ", trường hợp đã cho không xác thực đối với lược đồ đã cho (không chỉ định bất kỳ điều gì cho "bổ trợ").

Ai đó có thể giải thích ở đâu và theo cách nào tôi hiểu sai thông số kỹ thuật?

+0

Hy vọng điều đó sẽ hữu ích. Cảm ơn! –

Trả lời

25

Bạn đã tìm thấy lỗi trong thông số kỹ thuật, do đó bạn không thực sự hiểu sai điều gì đó.

Có một phiên bản cập nhật (từ hai ngày sau) bản nháp Internet trên trang web IETF, nơi ví dụ này khác.

xem: http://tools.ietf.org/html/draft-fge-json-schema-validation-00#page-13

Khi tài liệu là một dự thảo Internet, nhiều khả năng phiên bản trên http://datatracker.ietf.org/ là phiên bản chính xác.

Tình hình Memo này

này Internet Draft được gửi trong sự phù hợp hoàn toàn với các
quy định của BCP 78 và BCP 79.

Internet nháp tài liệu đang làm việc của Kỹ thuật Internet
Lực lượng đặc nhiệm (IETF)
. Lưu ý rằng các nhóm khác cũng có thể phân phối
tài liệu đang hoạt động dưới dạng Bản nháp Internet. Danh sách hiện tại Internet-
Bản nháp ở số http://datatracker.ietf.org/drafts/current/.

Bản nháp Internet là tài liệu làm việc của Kỹ thuật Internet
Lực lượng đặc nhiệm (IETF).

Bên cạnh đó, hai phiên bản có ngày khác nhau, và thời hạn sử dụng:

  • phiên bản bạn liên kết - viết: 30 Tháng 1 2013 và Expires: 03 Tháng 8 2013.
  • phiên bản trên IETF - viết trên: ngày 01 tháng 2 năm 2013 và Expires: 05 Tháng tám 2013

Trên phiên bản IETF:

schema này sẽ được sử dụng như là một ví dụ :

{ 
     "properties": { 
      "p1": {} 
     }, 
     "patternProperties": { 
      "p": {}, 
      "[0-9]": {} 
     }, 
     "additionalProperties": false 

Đây là ví dụ để xác thực:

{ "p1": đúng, "p2": null, "A32 & o": "foobar", "": [], "fiddle": 42, "quả táo": "pie "}

ba bộ tài sản bao gồm:

s [ "p1", "p2", "a32&o", "", "fiddle", "apple" ] 

    p [ "p1" ] 

    pp [ "p", "[0-9]" ] 

Áp dụng hai bước của thuật toán:

 after the first step, "p1" is removed from "s"; 

     after the second step, "p2" (matched by "p"), "a32&o" (matched by 
     "[0-9]") and "apple" (matched by "p") are removed from "s". 

Tập "s" vẫn chứa hai phần tử "" và "fiddle". Việc xác thực do đó không thành công.