2016-05-14 20 views
7

Kullanıcının girdiği metnin geçerli JSON olup olmadığını kontrol etmek istiyorum.Mongo'dan JSID'yi doğrula?

function IsJsonString(str) { 
    try { 
     JSON.parse(str); 
    } catch (e) { 
     return false; 
    } 
    return true; 
} 

Benim sorunum ObjectId sarılır Mongo, ISODate gelen JSON ile, yani:

{ 
    "_id" : ObjectId("5733b42c66beadec3cbcb9a4"), 
    "date" : ISODate("2016-05-11T22:37:32.341Z"), 
    "name" : "KJ" 
} 

Bu geçerli değil ben kolayca böyle bir şey kullanarak da yapabilirsiniz biliyorum JSON. Yukarıdaki gibi bir şeye izin verirken JSON'u doğrulamayı nasıl başarabilirim?

cevap

2

çıplak işlevini yerini alabilir https://regex101.com/r/fW7iH4/#javascript bu

function IsJsonLikeString(str) { 
    str = str.replace(/(\w+)\("([^"]+)"\)/g, '"$1(\"$2\")"'); 
    try { 
    JSON.parse(str); 
    } ... 

açıklama gibi bir şey dizeleriyle çağırır:

/(\w+)\("([^"]+)"\)/g 
    1st Capturing group (\w+) 
     \w+ match any word character [a-zA-Z0-9_] 
      Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy] 
    \(matches the character (literally 
    " matches the characters " literally 
    2nd Capturing group ([^"]+) 
     [^"]+ match a single character not present in the list below 
      Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy] 
      " a single character in the list " literally (case sensitive) 
    " matches the characters " literally 
    \) matches the character) literally 
    g modifier: global. All matches (don't return on first match) 
+0

olup olmadığını doğrulamak için Bu kesinlikle hile yapar! Yaptığım tek ayar "$" ($ 2 \ ") yerine" $ "idi, $ 2' '"$ 1 (\' $ 2 \ ')"' 'etrafında tek tırnak koydum, böylece" olarak görüntüleniyor " ObjectId ('1234') "' yerine "ObjectId (" 1234 ")" ', tırnakların kendisinden kaçması. – KJ3

0

Eğer gerekecek konu JSON doğrulama biri değil, bu kadar veritabanının aslında giriş verilerini ACCEPTS ile ilgili. Sözdiziminin doğru olup olmadığını kontrol etmek için doğru bir fikriniz var, ancak verileri mongo koleksiyonuyla çalıştırmanız ve herhangi bir hata olup olmadığını kontrol etmeniz gerekiyor.

Kontrol dışarı MongoDB db.collection.explain() geçerli bir Mongo sorgu

İlgili konular