ฉันมีออบเจ็กต์ JSON ที่ซ้อนกันซึ่งฉันต้องวนซ้ำและค่าของแต่ละคีย์อาจเป็นสตริงอาร์เรย์ 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
}
}
ฉันจะตรวจสอบวัตถุดังที่แสดงด้านบนได้อย่างไร