JSON-stringify和parse
目录
JSON序列化
const obj = {
name: "John",
age: 30,
city: "New York",
};
// 基本用法,将对象转换为 JSON 字符串
const jsonString = JSON.stringify(obj);
console.log(jsonString);
// 使用 replacer 函数进行自定义转换
const replacer = (key, value) => {
if (typeof value === "number" && value > 25) {
return value + 1;
}
return value;
};
const jsonStringWithReplacer = JSON.stringify(obj, replacer);
console.log(jsonStringWithReplacer);
// 使用 space 参数来控制缩进
const jsonStringWithIndentation = JSON.stringify(obj, null, 4);
console.log(jsonStringWithIndentation);
obj.toJSON=function(){
return {
fullName:this.name,
yearsOld:this.age,
location:this.city
}
}
const jsonString1= JSON.stringify(obj);
console.log(jsonString1);
JSON反序列化
// 假设我们有一个JSON格式的字符串
const jsonString =
'{"name": "Alice", "age": 25, "isStudent": true, "courses": ["Math", "Science"], "address": {"city": "New York", "zip": "10001"}}';
// 使用JSON.parse将JSON字符串反序列化为JavaScript对象
const parsedObject = JSON.parse(jsonString, (key, value) => {
console.log(`Key: ${key}, Value: ${value}`);
// 如果值是字符串类型,并且可以转换为数字,则将其转换为数字
if (typeof value === "string" && !isNaN(value)) {
return Number(value);
}
// 返回原始值
return value;
});
// 输出反序列化后的对象
console.log(parsedObject);
序列化和反序列化转换
// 定义一个对象
const person = {
name: "Alice",
age: 25,
hobbies: ["reading", "swimming"],
};
// 将对象序列化为 JSON 字符串
const jsonString = JSON.stringify(person);
// 使用 JSON.parse() 进行反序列化
const deserializedPerson = JSON.parse(jsonString);
// 打印原始对象、JSON 字符串和反序列化后的对象
console.log("原始对象:", person);
console.log("JSON 字符串:", jsonString);
console.log("反序列化后的对象:", deserializedPerson);
深拷贝
const obj = {
name: "John",
age: 30,
address: {
street: "123 Main St",
city: "New York",
state: "NY",
},
};
const deepCopy = JSON.parse(JSON.stringify(obj));
// 修改原始对象
obj.name = "Jane";
obj.address.city = "Los Angeles";
// 打印原始对象和深拷贝对象
console.log("原始对象:", obj);
console.log("深拷贝对象:", deepCopy);
JSON.parse接受参数类型错误导致抛出异常
export const filterLockAndNoExistList = (oldParam: string, authInfo: AuthInfo): string => {
if (isNil(oldParam) || isNil(authInfo)) return '';
const oldParamArray = oldParam?.split(',') || [];
// lockList为大整型的数组,用BigInt解决精度损失问题
const lockList = JSON.parse(authInfo?.lockList || '[]').map((i: number) => BigInt(i)+'');
const noExistList = JSON.parse(authInfo?.noExistList || '[]').map((i: number) => BigInt(i)+'');
// 过滤掉存在于 lockList 或 noExistList 中的元素
const filteredArray = oldParamArray.filter(id =>
!lockList.includes(id) && !noExistList.includes(id)
);
return filteredArray.join(',');
};
const lockList = (Array.isArray(authInfo?.lockList) ? authInfo.lockList : JSON.parse(authInfo?.lockList || '[]'))
.map((i: number) => BigInt(i) + '');
当有子元素的时候,设置父元素样式的方式
.poppy-spin-container {
// 默认样式
min-width: 200px;
// 当子元素中存在 .bill-data-empty 时
&:has(.bill-data-empty) {
min-width: 300px;
}
}
防抖问题
原文地址:https://blog.csdn.net/weixin_62268437/article/details/145161644
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!