JSON の型が一致するかの確認をしたかったので、サンプルを書きました。
型の確認といっても、JSON は Key と value のペアの配列という扱いなので、Key の有無チェックをすることになります。
また、key に対しての value が null だと、確か、key が存在しない扱いになり、判定できないということになるため、実装の際は、注意が必要になりそうです。
jsonCheck.js
// JSON の判定用 key リスト
const type_1 = {
type: 1,
key_list: ["param1", "param2"],
};
const type_2 = {
type: 2,
key_list: ["param_a", "param_b"],
};
const JSON_CHECK_LIST = [
type_1, type_2
];
function checkType1() {
// JSONの形状の判定対象
/*
// こっちで実行すると type = 1 の判定
let target = {
"param1": "a",
"param2": "b"
};
*/
// こっちで実行すると type = 2 の判定
let target = {
"param_a": "a",
"param_b": "b"
};
console.log("type->");
console.log(jsonTypeChesk(target));
}
/**
* 各パラメータの存在チェック
* @param {JSON} json
* @returns type値
*/
function jsonTypeChesk(json) {
for (let i = 0; i < JSON_CHECK_LIST.length; i++) {
let isNotContain = false;
for (let key_i = 0; key_i < JSON_CHECK_LIST[i].key_list.length; key_i++) {
let key = JSON_CHECK_LIST[i].key_list[key_i];
// null が取得される場合は、パラメータが存在しないため、型が不一致の判定
if (json[key] == null) {
isNotContain = true;
break;
}
}
if (isNotContain) {
continue;
} else {
// isNotContain == false なら、型一致の判定
return JSON_CHECK_LIST[i].type;
}
}
console.error("該当するType が存在しません。");
return null;
}