JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。它基于JavaScript的一个子集,但独立于语言。
// 假设有以下JSON对象
const jsonObj = {
"name": "John",
"age": 30,
"city": "New York",
"skills": ["JavaScript", "Python", "Java"]
};
// 1. 使用for...in循环
for (const key in jsonObj) {
if (jsonObj.hasOwnProperty(key)) {
console.log(`${key}: ${jsonObj[key]}`);
}
}
// 2. 使用Object.keys()
Object.keys(jsonObj).forEach(key => {
console.log(`${key}: ${jsonObj[key]}`);
});
// 3. 使用Object.entries()
Object.entries(jsonObj).forEach(([key, value]) => {
console.log(`${key}: ${value}`);
});
// 处理嵌套对象
const nestedJson = {
"person": {
"name": "Alice",
"address": {
"street": "123 Main St",
"city": "Boston"
}
}
};
function traverse(obj) {
for (const key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
traverse(obj[key]);
} else {
console.log(`${key}: ${obj[key]}`);
}
}
}
traverse(nestedJson);
import json
# 假设有以下JSON字符串
json_str = '{"name": "John", "age": 30, "city": "New York", "skills": ["JavaScript", "Python", "Java"]}'
# 解析JSON字符串为Python字典
data = json.loads(json_str)
# 1. 遍历字典
for key, value in data.items():
print(f"{key}: {value}")
# 2. 处理嵌套结构
nested_json_str = '{"person": {"name": "Alice", "address": {"street": "123 Main St", "city": "Boston"}}}'
nested_data = json.loads(nested_json_str)
def traverse(data):
if isinstance(data, dict):
for key, value in data.items():
if isinstance(value, (dict, list)):
traverse(value)
else:
print(f"{key}: {value}")
elif isinstance(data, list):
for item in data:
traverse(item)
traverse(nested_data)
import org.json.JSONObject;
import org.json.JSONArray;
public class JsonExample {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\",\"skills\":[\"JavaScript\",\"Python\",\"Java\"]}";
JSONObject jsonObj = new JSONObject(jsonStr);
// 遍历JSONObject
for (String key : jsonObj.keySet()) {
Object value = jsonObj.get(key);
System.out.println(key + ": " + value);
}
// 处理嵌套结构
String nestedJsonStr = "{\"person\":{\"name\":\"Alice\",\"address\":{\"street\":\"123 Main St\",\"city\":\"Boston\"}}}";
JSONObject nestedJson = new JSONObject(nestedJsonStr);
traverse(nestedJson);
}
public static void traverse(Object obj) {
if (obj instanceof JSONObject) {
JSONObject jsonObj = (JSONObject) obj;
for (String key : jsonObj.keySet()) {
Object value = jsonObj.get(key);
if (value instanceof JSONObject || value instanceof JSONArray) {
traverse(value);
} else {
System.out.println(key + ": " + value);
}
}
} else if (obj instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) obj;
for (int i = 0; i < jsonArray.length(); i++) {
traverse(jsonArray.get(i));
}
}
}
}
原因:JSON格式不正确,如缺少引号、逗号或大括号。
解决方案:
原因:尝试访问JSON对象中不存在的属性。
解决方案:
obj?.property
if ('property' in obj)
obj.property || defaultValue
问题:内存不足或性能问题。
解决方案: