使用Java的JSON验证shema

时间:2016-11-11 06:41:12

标签: java json

我有这个JSON:

{
   "header": 
      {
         "IssuerID": "000141",
         "AuthenticationID": "e07020c0d040a050a0808099",
         "AuthenticationDateTime": "20151103093035",
         "AuthenticationDateTimeGMT": "20151103093035",
         "Signature": "MThEMTExQkMzQzM0OUIxQjM5MDc2MjFGMzMyQjhDNTk1OTI0NDNERTg5ODcwQjNFOTc0ODQwNThBNkQxNTgzNTk2N0YzN0I2OTkyMzI1QjY2OENDQjgxRUNERDlGNDFDNzVCMzQ5Njg5NTY4NzkwNUQ5MzBDN0ExOTVGOUY0OUY2QjlCQzlDQkREOEQ3NjEzRkQ2OEYyMDhEQTY2QTkzNUZDM0UzOTI3RDk2OTYwODg4NTkyNzYyQUJCQkJFREZGNzNCNEEyNUU5OTc5OTFFODk2MTQ0Q0Y4Q0RGNzg1M0JBQTM4QkZBQzRFRUY2MTkzM0E4REI3QkQ0MEJBRkU4OTlEOTVDNTkxOTQ0M0IwNjMyMzZDQ0U4MzdBQTQzODU3RkMyOEQ0Rjk2NUMyRkNERUM0NDREQkIzNUM0QUVERDUzRjFBOTk5RTQ4Mjk4MzNERjU3RTQ1QUE2Nzc4MDUyRTdERTdGRTVFRURGRkVGMTlFN0Y2QTAyQTVCNjk3NUU2OUNGRUU3MzRGNDZDOTE0Q0U3NTk5NzdGNDkyOTdFQkRGREIwNDBCNDhBQTkzMzE1QjU0MzI1Njk0MjgxMjVDMzM5OUM3MTExNTg4NENBOTU3QTM4OTU5MTY5OTQ1NkQ2NDNFOUVEMjU5MjRDNzhEMDQxMEJGM0ZEQUVFM0Y1QTU="
      },

   "body": 
     {
         "TransactionDateTime": "0151103093035",
         "TransactionID": " SP020110216",
         "IASauthenticationRequestReferenceID": "h0IrqhqBoUpUCiSv17NB0vHvABIUxHGCurJZFzUWdZJz9TxYio",
         "VerificationID": "h0IrqhqBoUpUCiSv17NB0vHvABIUxHGCurJZFzUWdZJz9TxYio ",
         "Acquirer_id": "000014",
         "MerchantName": " Twin Hotel ",
         "CurrencyCodeISO": "360",
         "Amount": "970000.00",
         "CardNumber": " BmaHLuFRg4SaPnaGB07t5fNrHXr/lyOa ",
         "AuthenticationResponseCode": "00",
         "AuthenticationResponseDetails": "Success",
         "ValidityDateTimeExpireGMT": "20151103094035",
         "Expiry_Period": "10"
      }
}

如何验证这个json?例如,issuer id必须是整数并且具有最小值和最大值,如果有人放置头而不是头,则可以获得结果:" json无效"。 我使用java和json.org.simple进行解析。 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

如果您正在寻找真正的架构验证,可能需要查看http://json-schema.org/。有大多数常见语言的验证器。

假设有代表上述结构的类,您可以尝试使用Java Bean Validation。

答案 1 :(得分:0)

在您的情况下,我会使用像 jackson 这样的反序列化器而不是 json-schema,因为您的 json 中似乎将整数和日期编码为字符串。因此,在 json-schema 中,您需要定义奇怪的正则表达式。要了解如何使用 jackson 并权衡每种方法的优缺点,您可以在此处查看我的博客文章:Three Ways to Validate JSON in Java