kindergarten_java/reading-platform-backend/src/common/utils/json.util.ts

78 lines
1.6 KiB
TypeScript
Raw Normal View History

/**
* JSON
*
* JSON
*/
/**
* JSON
*
* @param value - JSON
* @param defaultValue -
* @returns
*
* @example
* ```typescript
* const tags = parseJsonField(course.gradeTags, []);
* const settings = parseJsonField(user.settings, {});
* ```
*/
export function parseJsonField<T>(
value: string | null | undefined,
defaultValue: T,
): T {
if (!value) {
return defaultValue;
}
try {
return JSON.parse(value) as T;
} catch {
return defaultValue;
}
}
/**
* JSON
*
* @param value -
* @param defaultValue -
* @returns JSON
*/
export function stringifyJsonField(
value: any,
defaultValue: string = '{}',
): string {
if (value === null || value === undefined) {
return defaultValue;
}
try {
return JSON.stringify(value);
} catch {
return defaultValue;
}
}
/**
* JSON
*
* @param value - JSON
* @returns
*/
export function parseJsonArray<T>(value: string | null | undefined): T[] {
return parseJsonField<T[]>(value, []);
}
/**
* JSON
*
* @param value - JSON
* @returns
*/
export function parseJsonObject<T extends Record<string, any>>(
value: string | null | undefined,
): T {
return parseJsonField<T>(value, {} as T);
}