【问题标题】:check whether data is in json format or not in python在python中检查数据是否为json格式
【发布时间】:2012-10-05 03:12:13
【问题描述】:

这是我的测试类,我正在尝试对我的方法 createaccount() 进行单元测试

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()的参数是否是json格式。

如果我通过data=

 { "_id" : "user@gmail.com", "H_id" : "smsg0", "name" : "vish", "passwrd" : "xj45cd" }

它应该检查它是否是json, 我确信这是 json 格式。 现在在我的方法createaccount() 中,它应该检查data 是否为json 格式, 如果不是,它应该打印错误消息,如果它与 regex 一起使用?或任何建议, 谢谢,

【问题讨论】:

  • 您可以尝试解析json,如果它无效则捕获异常。
  • @RudolfMühlbauer:如果它们是答案而不是 cmets,请添加 cmets 作为答案。
  • @AlexReynolds 在我看来,鲁道夫的建议是先尝试而不是解决方案......
  • @AlexReynolds,你是对的。但是,根据我的心情,我在 SO 中错过了很多 RTFM / WhatHaveYouTried。所以我用 cmets 来给出提示,而不是贴 4 行代码,很容易在网上找到,一本书,一个教程,...
  • 问题是,当这样的问题发布时,有 10 个人启动 google 或 python shell 来测试他们的答案。与 OP 自己尝试解决问题相比,这会消耗更多时间并且对 OP 具​​有学习效果。

标签: python regex json unit-testing


【解决方案1】:

看看this answer。另外,我建议不要使用正则表达式执行此检查,只需使用标准解析器并使用json.load检查错误

【讨论】:

    【解决方案2】:
    import json
    try:
      json.loads(data)
    except ValueError:
      print("data was not valid JSON")
    

    【讨论】:

    • 这个。 JSON 不规则,因此 Python 正则表达式根本无法验证 JSON。
    • @Vishruth:你什么意思?此代码在验证给定字符串 data 是否包含有效 JSON 时正常工作。它是否与您期望的数据格式匹配是一个不同的问题,与 JSON 验证本身无关。我上面的评论是说正则表达式方法是徒劳的,您需要改用解析器。
    • @Tim Pietzcker:对不起!,它工作正常。我在做其他方式!
    猜你喜欢
    • 1970-01-01
    • 2022-11-01
    • 2021-07-16
    • 2013-02-03
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    相关资源
    最近更新 更多