2016-04-21 21 views
7

Ben bu other question gördüm ama bu aynı değil, ve benim sorun daha basit gibi hissediyorum, ama sadece çalışmıyor. Bir node.js projesinde JSON doğrulama için AJV kullanmak isteyen kulüplerJSON Şema tanımı nesnelerin dizisi için

[ 
    { "loc": "a value 1", "toll" : null, "message" : "message is sometimes null"}, 
    { "loc": "a value 2", "toll" : "toll is sometimes null", "message" : null} 
] 

ve benim verileri tanımlamak için denemek için birkaç şemaları denedim ama:

Benim veriler şu şekilde görünecektir böyle

[ { keyword: 'type', 
    dataPath: '', 
    schemaPath: '#/type', 
    params: { type: 'array' }, 
    message: 'should be array' } ] 

şema ben denedim görünüyor:

{ 
    "type": "array", 
    "items": { 
    "type": "object", 
    "properties": { 
     "loc": { 
     "type": "string" 
     }, 
     "toll": { 
     "type": "string" 
     }, 
     "message": { 
     "type": "string" 
     } 
    }, 
    "required": [ 
     "loc" 
    ] 
    } 
} 
hep hata olarak bu olsunBen de this online tool kullanarak şema oluşturmaya çalıştım ama aynı zamanda işe yaramıyor ve doğru sonuç çıkması gerektiğini doğrulamak için, bu çıktıyı jsonschemavalidator.net karşı denedim, ancak bu da bana benzer bir hata veriyor:
Found 1 error(s) 
Message: 
Invalid type. Expected Array but got Object. 
Schema path: 
#/type 

cevap

16

Düzeninizi doğruladığınızı belirttiğiniz verilerle eşleşmemesi dışında şemanızı doğru bir şekilde tanımladınız. Şema ile eşleşen mülk adlarını değiştirirseniz yine de bir sorunla karşılaşırsınız. "Ücret" ve "mesaj" öğelerinin null olması için izin vermek isterseniz, aşağıdakileri yapabilirsiniz. Ancak, bu, aldığınız hata iletisiyle ilgili değil. Ancak, bu hata iletisiyle ilişkili değildir. Bu mesaj, doğrulamakta olduğunuz verilerin bir dizi olmadığı anlamına gelir. Gönderdiğiniz örnek veriler bu hataya neden olmamalıdır. Doğrulayıcıyı, soruda yayınlanandan başka bazı veriler üzerinde mi çalıştırıyorsunuz?

+0

Verilere karşı doğrulama noktasında bile değilim, şu anda sadece şemanın kendisini doğrulamaya çalışıyorum. –

+0

@KyleFalconer, şemanınız geçerli. Bağlandığınız doğrulayıcıyı denedim. Sanırım sahip olduğunuz problem, varsayılan olarak "Girdi JSON" alanına "{}" koymasıdır. Bunu bir diziye değiştirmeniz gerekiyor. Araç, hatanın şemada olduğu gibi görünmesini sağlar, ancak aslında geçersiz olan verilerdir. – Jason

+0

Dang, haklısın! Çok teşekkürler! –