2017-05-10 30 views
0

我試圖拿出一個架構驗證JSON對象類似如下:JSON模式是否可以驗證一個屬性是否包含某個屬性?

{ 
"id":"some_id", 
"properties":{ 
    "A":{ 
    "name":"a", 
    "isindex":true 
    }, 
    "B":{ 
    "name":"b" 
    }, 
    "C":{ 
    "name":"c" 
    } 
} 
} 

該協議是:

  1. 屬性A,B,C是事先不知道,並且可以是任何字符串。
  2. 其中一個屬性(A,B,C ...)的值爲「isindex」:真正的鍵值對錶示該屬性將用作索引。那就是說以下是無效的。

{ 
    "id":"some_id", 
    "properties":{ 
    "A":{ 
     "type":"string", 
     "isindex":true 
    }, 
    "B":{ 
    "type":"string" 
    }, 
    "C":{ 
     "type":"array", 
     "isindex":true 
    } 
    } 
} 

實際上,我不確定JSON模式是否適合此工具。

任何或所有的幫助表示讚賞!

+0

這是很難看到你問這裏。你可以擴大一點嗎? –

+0

@TravisJ我發現一個錯字,並糾正它(只有一個 - >一個也是唯一一個)。這可能會讓你感到困惑。對於那個很抱歉。多一點的背景可能會有所幫助。在我的問題中要驗證的對象描述了一個類型定義。該類型具有多個屬性(A,B,C,...),並且只有一個屬性應該用作該類型對象的唯一標識(索引)。我想用JSON模式來確定是這種情況。 – AaronT

回答

1

JSON Schema是這類事情的正確工具,但是您偶然發現了一個它無法處理的特定情況。你可以斷言至少有一個匹配特定的模式,但是你不能斷言只有一個匹配。

你能做的最好的事情是改變你的數據結構是這樣的......

{ 
    "id":"some_id", 
    "properties":{ 
    "A":{ 
     "name":"a" 
    }, 
    "B":{ 
     "name":"b" 
    }, 
    "C":{ 
     "name":"c" 
    } 
    }, 
    "index": "A" 
} 
+0

Touche! 「你可以斷言至少有一個匹配特定的模式,但是你不能斷言只有一個匹配。」我想這回答了我的問題。謝謝! – AaronT

相關問題