Files
common_agent/frontend/src/api/json.ts

22 lines
582 B
TypeScript

import JSONBig from 'json-bigint';
const jsonParser = JSONBig({
storeAsString: true,
useNativeBigInt: false,
});
function looksLikeJsonPayload(data: string) {
const trimmed = data.trim();
return trimmed.startsWith('{') || trimmed.startsWith('[');
}
export function parseJsonPreservingLong<T>(data: unknown, contentType?: string): T | unknown {
if (typeof data !== 'string' || !looksLikeJsonPayload(data)) {
return data;
}
if (contentType && !contentType.toLowerCase().includes('application/json')) {
return data;
}
return jsonParser.parse(data) as T;
}