Tôi có một đối tượng JSON lồng nhau mà tôi cần lặp qua và giá trị của mỗi khóa có thể là một Chuỗi, mảng JSON hoặc một đối tượng JSON khác. Tùy từng loại đối tượng mà tôi cần thực hiện các thao tác khác nhau. Có cách nào tôi có thể kiểm tra loại đối tượng để xem nó là chuỗi, đối tượng JSON hay mảng JSON?
Tôi đã thử sử dụng typeof
và instanceof
nhưng cả hai dường như không hoạt động, vì typeof
sẽ trả về một đối tượng cho cả đối tượng và mảng JSON và instanceof
đưa ra lỗi khi tôi thực hiện obj instanceof JSON
.
Cụ thể hơn, sau khi phân tích cú pháp JSON thành một đối tượng JS, có cách nào tôi có thể kiểm tra xem nó là một chuỗi bình thường hay một đối tượng có khóa và giá trị (từ một đối tượng JSON) hay một mảng (từ một mảng JSON )?
Ví dụ:
JSON
var data = "{'hi':
{'hello':
['hi1','hi2']
},
'hey':'words'
}";
JavaScript mẫu
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
}
}
Làm cách nào để thực hiện kiểm tra đối tượng như hình trên?