ループする必要のあるネストされたJSONオブジェクトがあり、各キーの値はString、JSON配列、または別のJSONオブジェクトである可能性があります。オブジェクトの種類に応じて、さまざまな操作を実行する必要があります。オブジェクトのタイプをチェックして、それが文字列、JSONオブジェクト、またはJSON配列であるかどうかを確認する方法はありますか?
を使用typeof
してみましたinstanceof
が、typeof
JSONオブジェクトと配列の両方のオブジェクトが返され、instanceof
実行するとエラーが発生するため、両方が機能しないようでしたobj instanceof JSON
。
具体的には、JSONをJSオブジェクトに解析した後、それが通常の文字列であるか、キーと値を持つオブジェクト(JSONオブジェクトから)であるか、配列(JSON配列から)であるかを確認する方法はありますか? )?
例えば:
JSON
var data = "{'hi':
{'hello':
['hi1','hi2']
},
'hey':'words'
}";
サンプルJavaScript
var jsonObj = JSON.parse(data);
var path = ["hi","hello"];
function check(jsonObj, path) {
var parent = jsonObj;
for (var i = 0; i < path.length-1; i++) {
var key = path[i];
if (parent != undefined) {
parent = parent[key];
}
}
if (parent != undefined) {
var endLength = path.length - 1;
var child = parent[path[endLength]];
//if child is a string, add some text
//if child is an object, edit the key/value
//if child is an array, add a new element
//if child does not exist, add a new key/value
}
}
上記のようにオブジェクトチェックを実行するにはどうすればよいですか?