2012-10-15 64 views
0

這是我的測試類,我試圖單元測試我的方法是的createAccount()檢查數據是否是JSON格式或不蟒蛇

class CreateAccountTest1(unittest.TestCase): 
    def testCreateAccount_1(self,data): 
     text = "{'user_id':'abc123','action':'add','names':['hello','world']}" 
     regex = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(text.replace(/"(\\.| [^"\\])*"/ g, ''))) && eval('(' + text + ')') 
     self.assertRegexpMatches(text, reg, 'my msg') 

的createAccount()方法

class CreateAccountClass(): 
    def CreateAccount(self,data): 

現在我要檢查createaccount()的參數是否處於JSO n格式還是不是。

如果我通過data=

{ "_id" : "[email protected]", "H_id" : "smsg0", "name" : "vish", "passwrd" : "xj45cd" } 

應該檢查是否是JSON與否, ,我相信這是JSON格式。 現在在我的方法createaccount()它應該檢查是否data是否是json格式或不, 如果不是它應該打印錯誤消息,如果它與regex一起使用?或任何建議, 謝謝,

+1

檢查錯誤。您可以*嘗試*解析json,如果無效,則捕獲該異常。 –

+0

@RudolfMühlbauer:如果是答案而不是評論,請添加評論作爲答案。 –

+1

@AlexReynolds在我看來,魯道夫是一個建議,嘗試*之前詢問*不僅僅是一個解決方案... – Gabber

回答

6
import json 
try: 
    json.loads(data) 
except ValueError: 
    print("data was not valid JSON") 
+0

這。 JSON不是常規的,因此Python正則表達式從根本上無法驗證JSON。 –

+0

@Vishruth:你是什麼意思?此代碼在驗證給定字符串「data」是否包含有效的JSON時正常工作。它是否符合您期望的數據格式是一個不同的問題,並且與JSON驗證本身無關。我上面的評論意味着說,正則表達式的方法是徒勞的,你需要使用解析器。 –

+0

@Tim Pietzcker:對不起!,雅的工作正常。我以其他方式做了! – WEshruth

0

this answer。另外,我建議不要使用正則表達式執行此檢查,只需使用標準解析器執行此操作,並使用json.load