0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JSONの型確認(JavaScript)

Posted at

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;
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?