I made a button for restore some data into a specific wordpress options database field. This button is sending a json file to my server, then there is a php code that updates the related options field into my wordpress database. This is working as expected, but I want to make on the php server side a check before updating the data, this check must evaluate the json structure and tells if is a correct one(at least at a basic level). How can I accomplish this kind of check? this is the json structure that I'm sending to the server. The structure is always the same, but since the json file is made from a dynamically extensible form, it can grow if I add more destinations(destinazione), dates(dataPartenza) etc
JSON
{
"destinazione":{
"Corfù":{
"dataPartenza":{
"2021-07-16":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"365.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
},
"comfort":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"395.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
},
"superior":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"445.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
}
}
},
"2021-07-23":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"365.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
},
"comfort":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"395.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
},
"superior":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"445.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
}
}
},
"2021-07-30":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"365.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
}
}
},
"2021-08-06":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"365.00"
},
"01|supplemento monolocale":{
"capienza":"N/S",
"prezzo":"50.00"
}
},
"comfort":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"385.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
},
"superior":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"445.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
}
}
},
"2021-08-13":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"365.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
},
"comfort":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"385.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
},
"superior":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"445.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"60.00"
}
}
}
},
"2021-08-20":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"345.00"
},
"01|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
},
"comfort":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"395.00"
},
"01|superior":{
"capienza":"2",
"prezzo":"60.00"
}
},
"superior":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"405.00"
},
"01|supplemento monolocale":{
"capienza":"N/S",
"prezzo":"60.00"
}
}
}
}
}
},
"Zante":{
"dataPartenza":{
"2021-07-17":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"5",
"prezzo":"395.00"
},
"01|bilocale":{
"capienza":"4",
"prezzo":"415.00"
},
"02|studios":{
"capienza":"3",
"prezzo":"405.00"
},
"03|studios":{
"capienza":"2",
"prezzo":"425.00"
}
}
}
},
"2021-07-24":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"395.00"
},
"01|bilocale ":{
"capienza":"4",
"prezzo":"425.00"
},
"02|studio":{
"capienza":"3",
"prezzo":"415.00"
},
"03|studio":{
"capienza":"2",
"prezzo":"445.00"
}
}
}
},
"2021-07-31":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"395.00"
},
"01|bilocale":{
"capienza":"4",
"prezzo":"425.00"
},
"02|studio":{
"capienza":"3",
"prezzo":"415.00"
},
"03|studio":{
"capienza":"3",
"prezzo":"445.00"
}
}
}
},
"2021-08-07":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"395.00"
},
"01|bilocale":{
"capienza":"4",
"prezzo":"425.00"
},
"02|studio":{
"capienza":"3",
"prezzo":"415.00"
},
"03|studio":{
"capienza":"2",
"prezzo":"445.00"
}
}
}
},
"2021-08-14":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"385.00"
},
"01|bilocale":{
"capienza":"4",
"prezzo":"425.00"
},
"02|studio":{
"capienza":"3",
"prezzo":"415.00"
},
"03|studio":{
"capienza":"2",
"prezzo":"445.00"
}
}
}
}
}
},
"Pag":{
"dataPartenza":{
"2021-07-18":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"274.00"
},
"01|supplemento monolocale":{
"capienza":"3",
"prezzo":"30.00"
},
"02|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
}
}
},
"2021-07-25":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"274.00"
},
"01|supplemento monolocale":{
"capienza":"3",
"prezzo":"30.00"
},
"02|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
}
}
},
"2021-08-01":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"274.00"
},
"01|supplemento monolocale":{
"capienza":"3",
"prezzo":"30.00"
},
"02|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
}
}
},
"2021-08-08":{
"soldout":false,
"sistemazione":{
"basic":{
"00|quota base":{
"capienza":"N/S",
"prezzo":"274.00"
},
"01|supplemento monolocale":{
"capienza":"3",
"prezzo":"30.00"
},
"02|supplemento monolocale":{
"capienza":"2",
"prezzo":"50.00"
}
}
}
}
}
}
}
}
edit: I don't understand why I'm receving downvotes for this question, I think that the provided solution is working good and is perfect for my particular setup. I cleared a little the code and the answer.