JSON数据-在PHP中验证属性
我试图针对大型JSON数据验证一个简单的模式。我只需要找到我在PHP代码中使用的属性是否存在于JSON数据中。我看过几个库,但它们似乎有些过分,因为它们甚至验证了数据类型,我只需要属性的存在 例如: 我使用的PHP变量:JSON数据-在PHP中验证属性,php,json,schema,Php,Json,Schema,我试图针对大型JSON数据验证一个简单的模式。我只需要找到我在PHP代码中使用的属性是否存在于JSON数据中。我看过几个库,但它们似乎有些过分,因为它们甚至验证了数据类型,我只需要属性的存在 例如: 我使用的PHP变量:姓名、年龄、性别 JSON数据: { "Location": "10.2.00", "Name": "Foo", "Age": "30", "Race": "NA", "Gender": "Male" } 因此JSON中可能有额外的数据 如何检查PHP代码或
姓名、年龄、性别
JSON数据:
{
"Location": "10.2.00",
"Name": "Foo",
"Age": "30",
"Race": "NA",
"Gender": "Male"
}
因此JSON中可能有额外的数据
如何检查PHP代码或其他JSON模式中是否存在JSON变量?如果只需要验证简单模式中的键是否存在,可以使用 定义简单模式(请记住,键区分大小写。) 解码大的JSON数据(确保使用
JSON\u Decode
的第二个参数来获取一个数组以进行比较。)
然后,使用
array\u flip
将简单模式的值转换为用于比较的键
$json = json_decode($large_json_data, true);
如果
$missing_keys
为空,则模式中的所有键都存在于大型JSON数据中。因此,添加大小写不敏感:
$props = array('name', 'age', 'gender');
$array = array_map('strtolower', array_keys(json_decode($json, true)));
if(empty(array_diff($props, $array))) {
echo "All properties exist";
}
- 使用小写属性名数组
- 从JSON获取密钥并映射到
strtolower()
- 检查差异是否为
表示所有属性都存在empty()
$missing_keys = array_diff_key(array_flip($simple_schema), $json);
$props = array('name', 'age', 'gender');
$array = array_map('strtolower', array_keys(json_decode($json, true)));
if(empty(array_diff($props, $array))) {
echo "All properties exist";
}