2014-12-30 8 views
8

स्कीमा सत्यापन के साथ कोई समस्या का सामना करना।जेसन स्कीमा गतिशील कुंजी सत्यापन

स्कीमा:

{ 
    "type": "object", 
    "$schema": "http://json-schema.org/draft-03/schema", 
    "id": "#", 
    "required": true, 
    "patternProperties": { 
     "^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,6}$": { 
      "type": "object", 
      "required": true, 
      "properties": { 
       "_from": { 
        "id": "_from", 
        "type": "string", 
        "required": true 
       }, 
       "message": { 
        "type": "object", 
        "id": "message", 
        "properties": { 
         "detail": { 
          "type": "string", 
          "id": "detail", 
          "required": true 
         }, 
         "from": { 
          "type": "string", 
          "id": "from", 
          "required": true 
         } 
        } 
       } 
      } 
     } 
    } 
} 

json:

{ 
    "[email protected]": { 
     "_from": "[email protected]", 
     "message": { 
      "from": "[email protected]", 
      "detail": "AnyonewanttomeetmeinParis" 
     } 
    }, 
    "[email protected]": { 
     "_from": "[email protected]", 
     "message": { 
      "from": "[email protected]", 
      "detail": "AnyonewanttomeetmeinParis" 
     } 
    } 
} 

यहाँ कुंजी ईमेल पता गतिशील है, किसी भी तरह यह ईमेल सत्यापन के लिए रेगुलर एक्सप्रेशन से सत्यापित नहीं करता।

क्या आप कृपया मुझे स्कीमा को सही करने के लिए सलाह दे सकते हैं।

मैं का उपयोग कर मान्य कर रहा हूँ: http://json-schema-validator.herokuapp.com/index.jsp

उत्तर

7

मैं अपने पैटर्न में देखा कि आपने कुछ पात्रों से बचने के लिए भूल गए हैं करने के लिए या इसे सही ढंग से नहीं किया लगते हैं:

"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,6}$" 

और यह कारण बनता है जब आप सत्यापनकर्ता के शीर्ष पर दिए गए लिंक पर माउस को घुमाते हैं तो आप देख सकते हैं:

enter image description here

यह होना चाहिए:

"^[A-Z0-9\\._%\\+-][email protected][A-Z0-9\\.-]+\\.[A-Z]{2,6}$" 

या आंतरिक/वर्ग वर्ण से बचने के बिना, लेकिन मैं पहले पैटर्न का उपयोग करें, क्योंकि मुझे लगता है कि अपने इरादे स्पष्ट है:

"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,6}$" 

आप दो की आवश्यकता है \ क्योंकि पहले \ दूसरे \ के लिए एक भाग निकलना है। एक के साथ यह काम नहीं करेगा क्योंकि escape sequence\. या \+ जावास्क्रिप्ट में नहीं है। आप पैटर्न में \ रखना चाहते हैं।

"^[A-Za-z0-9\\._%\\+-][email protected][A-Za-z0-9\\.-]+\\.[A-Za-z]{2,6}$" 

(मैं किसी अन्य तरीके से यह केस संवेदी बनाने के लिए नहीं मिला):

हालांकि json स्कीमा patternProperties मामला डिफ़ॉल्ट ताकि आप इसे करने के लिए a-z जोड़कर अपनी ईमेल पैटर्न बढ़ाने की जरूरत से संवेदनशील होते हैं

तुम भी या "additionalProperties": falsepatternProperties के बगल में जोड़कर किसी अन्य संपत्ति के नाम बाहर करने की आवश्यकता नहीं तो यह सब कुछ है कि पैटर्न से मेल नहीं खाता फैल जाती है।

काम कर स्कीमा तो इस तरह दिखना चाहिए:

{ 
    "type": "object", 
    "$schema": "http://json-schema.org/draft-03/schema", 
    "id": "#", 
    "required": true,  
    "patternProperties": { 
     "^[A-Za-z0-9\\._%\\+-][email protected][A-Za-z0-9\\.-]+\\.[A-Za-z]{2,6}$": { 
      "type": "object", 
      "required": true, 
      "properties": { 
       "_from": { 
        "id": "_from", 
        "type": "string", 
        "required": true 
       }, 
       "message": { 
        "type": "object", 
        "id": "message", 
        "properties": { 
         "detail": { 
          "type": "string", 
          "id": "detail", 
          "required": true 
         }, 
         "from": { 
          "type": "string", 
          "id": "from", 
          "required": true 
         } 
        } 
       } 
      } 
     } 
    }, 
    "additionalProperties": false 
} 

मैं पर जाँच की है: http://jsonschemalint.com/

+0

अभी भी अपने परिवर्तन की कोशिश की नाकाम रहने के। परिवर्तन के बाद आपने सत्यापन करने की कोशिश की है? –

+0

हां मेरे पास है। ऐसा शायद इसलिए है क्योंकि आपने स्निपेट को गलत तरीके से स्वरूपित किया है और यदि आप उन्हें यहां से कॉपी करते हैं तो उन्हें एक समापन संश्लेषण याद आती है। – t3chb0t

+0

अमान्य ईमेल पते के लिए सत्यापन भी सफलता है। क्या आपने एक अवैध ईमेल पता देने का प्रयास किया है। –

4

प्रति मसौदा 04 के रूप में स्कीमा परिवर्तित:

{ 
"type": "object", 
"$schema": "http://json-schema.org/draft-04/schema", 
"patternProperties": { 
    "^[A-Za-z0-9\\._%\\+-][email protected][A-Za-z0-9\\.-]+\\.[A-Za-z]{2,6}$": { 
     "type": "object", 
     "properties": { 
      "__from": { 
       "type": "string" 
      }, 
      "message": { 
       "type": "object", 
       "properties": { 
        "from": { 
         "type": "string" 
        }, 
        "detail": { 
         "type": "string" 
        } 
       }, 
       "required": [ "from","detail"] 
      } 
     }, 
     "required": [ "__from","message"] 
    } 
}, 
"additionalProperties": false 
} 
संबंधित मुद्दे