javascript – How to check if JSON has this structure?

Question:

I have a json file that varies its structure

{
    "Plan1": [
        {
            "Sequencia": "1",
            "Mês de aniversario": "agosto",
            "Nome Completo": "Joao da silva"
         }
     ]
}

and wanted to check if these indices have these values? what is the best way to do this with jquery?

I want to check if json has this structure always, so the indices have to be these String Month of Birthday Full Name

Answer:

Guilherme, if you want to validate the structure of a JSON, I advise you to build a JSON Schema for it, you can read more about it at: JSON Schema

The site above has a list of libraries to perform JSON validation, in the case of JavaScript, I recommend one of the three below:

  1. JJV: JJV JSON Validator
  2. z-schema validator
  3. Help: Another JSON Schema Validator

to validate the JSON that entered the question, you can use the following Schema:

{
  type: 'object',
  properties: {
    'Plan1': {
      'type': 'array',
      'minItems': 1,
      'items':  {
        type: 'object',
        properties: {
          'Sequencia': {
            type: 'number'
          },
          'Mês de aniversario': {
            type: 'string',
            enum: [
              'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 
              'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'
            ]
          },
          'Nome Completo': {
            type: 'string'
          }
        },
        required: ['Sequencia', 'Mês de aniversario', 'Nome Completo']
      }
    }
  },
  required: ['Plan1']
}

Note that in the case above all properties are mandatory and the Sequential must be numeric.

below is an example of implementation using AJV

 var schema = { type: 'object', properties: { 'Plan1': { 'type': 'array', 'minItems': 1, 'items': { type: 'object', properties: { 'Sequencia': { type: 'number' }, 'Mês de aniversario': { type: 'string', enum: [ 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro' ] }, 'Nome Completo': { type: 'string' } }, required: ['Sequencia', 'Mês de aniversario', 'Nome Completo'] } } }, required: ['Plan1'] }; var json1 = { "Plan1": [ { "Sequencia": 1, "Mês de aniversario": "agosto", "Nome Completo": "Joao da silva" } ] } var json2 = { "Plan1": [ { "Sequencia": "2", "Mês de aniversario": "13º mês", "Nome Completo": "Joao da silva" } ] } var ajv = new Ajv({allErrors: true}); var validate = ajv.compile(schema); if (validate(json1)) console.log("json valido!"); else { console.log("json invalido: " + JSON.stringify(validate.errors)); } if (validate(json2)) console.log("json valido!"); else { console.log("json invalido: " + JSON.stringify(validate.errors)); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/4.0.5/ajv.min.js"></script>
Scroll to Top
AllEscort