- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 JSON 架构来验证某些值。我有两个对象,称它们为 trackedItems 和 trackedItemGroups。 trackedItemGroups 是组名称和 trackedItems 名称列表。例如,架构类似于:
"TrackedItems": {
"type": "array",
"items": {
"type": "object",
"properties": {
"TrackedItemName": { "type": "string" },
"Properties": { ---- }
}
}
},
"TrackedItemGroups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"GroupName": {
"type": "string"
},
"TrackedItems": {
"type": "array",
"items": {"type": "string"}
}
}
}
}
我想验证 TrackedItemGroups
中的每个字符串的 TrackedItems
array 是在 TrackedItems.TrackedItemName
中定义的名称.
这类似于使用 liệt kê
属性来限制值,但是 liệt kê
列表是根据 TrackedITems.TrackedItemName
中的值生成的.
如何编写架构以使用 JSON 自己的数据进行验证?
我知道我可以四处移动,即 TrackedItems 定义它们所在的组,但有数百个跟踪项目,而且这种组织方式更适合我的用例。
我已经试过了:
"TrackedItems": {
"type": "array",
"items": {
"oneOf": [
{"$ref":"#/properties/TrackedItems/items/properties/TrackedItemName"}
]
}
}
但这会导致错误:
Newtonsoft.Json.Schema.JSchemaReaderException: Could not resolve schema reference '#/properties/TrackedItems/items/properties/TrackedItemName'.
对于数据示例,如果我有 TrackedItems:
项目 1、项目 2、项目 A、项目 B、项目 C
和组:
第 1 组: Item1, ItemB, ItemC
第 2 组: Item1, Item2, ItemZ
Group2 会引发违规,因为它包含未在 TrackedItems 中定义的项目。
1 Câu trả lời
BẰNG验证(以及由琐碎断言描述的某些其他事物)的词汇表,JSON 模式不提供验证数据一致性的方法。
验证意味着像“验证 X 是一个字符串”这样的断言。
一致性意味着诸如“验证 X 是现有活跃用户的 ID”之类的事情。
由于被比较的数据可能完全在另一个数据库中,并且由于这些类型的断言很重要,因此 JSON Schema 将验证数据的一致性留给了应用程序和/或其他技术。一些实现具有用于文档内比较的特定于供应商的扩展,但是这些都不是标准化的,我不知道有什么可以在这里工作。
$ref
引用在这里不起作用,因为它只是一种通过引用替换另一个模式的方法。如果您可以设法使引用起作用(我不确定为什么会出现错误,这是特定于实现的细节),则此模式:
{ "oneOf": [
{"$ref":"#/properties/TrackedItems/items/properties/TrackedItemName"}
] }
与说完全一样:
{ "oneOf": [
{"type": "string"}
] }
既然你问的是“验证以下陈述之一是否为真”,这也等同于简单地:
{"type": "string"}
这并不是说您不能使用 JSON Schema 在 JSON 中声明数据之间的关系,但 JSON Schema 对于使用 URI 和超链接来这样做有些自以为是。
关于json - 将 JSON 值限制为其他 JSON 对象的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42448780/
Một trong những giáo sư của tôi đã đưa cho chúng tôi một số câu hỏi thực hành cho một kỳ thi và một trong những câu hỏi đó giống như thế này (mã giả): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
Tôi có vẻ sử dụng bài kiểm tra này rất nhiều if( object && object !== "null" && object !== "undefined" ){ doSomething(); } trên một đối tượng, tôi
C# Object/object là kiểu giá trị hay kiểu tham chiếu? Tôi đã kiểm tra rằng họ có thể giữ tham chiếu, nhưng tham chiếu này không thể được sử dụng để thay đổi đối tượng. sử dụng System; lớp MyClass { public static
Tôi đang gặp sự cố khi gửi json qua AJAX. var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
Khi tôi cố truy cập đối tượng {{result}} trong View của mình (mà tôi gửi từ máy chủ Express js), nó chỉ hiển thị [object][object] Có ai biết cách lấy giá trị ở định dạng JSON không? Đây là
Tôi có dữ liệu ở nhiều kiểu khác nhau (có thể là chuỗi, số nguyên...). Sau đây là một ví dụ đơn giản: public static void main(String[] args) { before("one"); }
Xin chào, tôi mới làm quen với json và javascript. Tôi tìm thấy phương pháp sử dụng dữ liệu json làm bảng trên trang web này. Tôi tò mò tại sao khi tôi thử sử dụng dữ liệu json làm bảng, tôi lại nhận được [Object,Object]
Đã đóng. Sự cố này cần có thông tin chi tiết để gỡ lỗi. Hiện tại không chấp nhận câu trả lời. Chỉnh sửa câu hỏi để bao gồm hành vi mong muốn, một vấn đề hoặc lỗi cụ thể và
Tôi nghe người khác nói null == object tốt hơn object == null kiểm tra Ví dụ: void m1(Object obj ) { if(null == obj) // Đây có phải là
Đối tượng Match cung cấp quyền truy cập vào các thuộc tính chỉ đọc của một biểu thức chính quy khớp. Mô tả Đối tượng Match chỉ có thể được tạo thông qua phương thức Execute của đối tượng RegExp, phương thức này thực sự trả về một tập hợp các đối tượng Match. Tất cả
Đối tượng lớp Đối tượng được tạo bằng cách sử dụng câu lệnh Class. Cung cấp quyền truy cập vào nhiều sự kiện khác nhau của lớp học. Mô tả: Không được phép khai báo rõ ràng một biến là kiểu Class. Trong bối cảnh của VBScript, thuật ngữ "đối tượng lớp" đề cập đến một
Đối tượng Folder cung cấp quyền truy cập vào tất cả các thuộc tính của một thư mục. Đoạn mã sau minh họa cách lấy đối tượng Thư mục và xem các thuộc tính của nó: Hàm ShowDateCreated(f
Đối tượng File cung cấp quyền truy cập vào tất cả các thuộc tính của một tệp. Đoạn mã sau minh họa cách lấy đối tượng File và xem các thuộc tính của nó: Hàm ShowDateCreated(fil
Đối tượng Drive cung cấp quyền truy cập vào các thuộc tính của ổ đĩa hoặc chia sẻ mạng. Mô tả Mã sau đây minh họa cách sử dụng đối tượng Drive để truy cập các thuộc tính của ổ đĩa: Hàm ShowFreeSpac
Đối tượng FileSystemObject cung cấp quyền truy cập vào hệ thống tập tin của máy tính. Đoạn mã sau minh họa cách sử dụng đối tượng FileSystemObject để trả về đối tượng TextStream có thể đọc được.
Tôi mới làm quen với JavaScript OOP và tôi nghĩ đây là một câu hỏi khá cơ bản nhưng tôi không thể tìm thấy bất kỳ sự trợ giúp nào khi tìm kiếm trên web. Tôi có bỏ lỡ điều gì không, hay tôi đang làm sai cách? Đây là mã mẫu của tôi: functionio
Tôi có thể dễ dàng tạo ra nhiều đồ vật khác nhau. Ví dụ như thế này: var myObject = { myFunction: function () { return ""; } };
hàm Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = hàm()
Có ai có thể giải thích cho tôi tại sao đoạn mã sau lại trả về (object, Object) không? (console.log(dope) cung cấp những gì nó cần, nhưng trong JSON.stringify và JSON.parse
Tôi đang cố gắng hoàn thành bài tập biểu đồ phân tán từ trại mã miễn phí. Tuy nhiên, tôi mới chỉ tự học d3 được vài giờ và sau khi làm theo hướng dẫn từ lynda.com, tôi đã cố gắng xác định cách hiển thị dữ liệu cụ thể trong chú giải công cụ. Mã này
Tôi là một lập trình viên xuất sắc, rất giỏi!