mirror of
https://github.com/axios/axios.git
synced 2026-04-11 14:21:59 +08:00
feat: support reviver on JSON.parse (#5926)
* test: test to support reviver on JSON.parse * feat: support reviver for JSON.parse on parse response data #5924 --------- Co-authored-by: Jay <jasonsaayman@gmail.com>
This commit is contained in:
parent
7960d34ede
commit
2a9763426e
1
index.d.ts
vendored
1
index.d.ts
vendored
@ -361,6 +361,7 @@ export interface AxiosRequestConfig<D = any> {
|
||||
lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) |
|
||||
((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>);
|
||||
withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined);
|
||||
parseReviver?: (this: any, key: string, value: any) => any;
|
||||
fetchOptions?: Omit<RequestInit, 'body' | 'headers' | 'method' | 'signal'> | Record<string, any>;
|
||||
}
|
||||
|
||||
|
||||
@ -111,7 +111,7 @@ const defaults = {
|
||||
const strictJSONParsing = !silentJSONParsing && JSONRequested;
|
||||
|
||||
try {
|
||||
return JSON.parse(data);
|
||||
return JSON.parse(data, this.parseReviver);
|
||||
} catch (e) {
|
||||
if (strictJSONParsing) {
|
||||
if (e.name === 'SyntaxError') {
|
||||
|
||||
@ -2332,4 +2332,22 @@ describe('supports http with nodejs', function () {
|
||||
}, /ENOTFOUND/);
|
||||
});
|
||||
});
|
||||
|
||||
describe('JSON', function() {
|
||||
it('should support reviver on JSON.parse', async function () {
|
||||
server = await startHTTPServer(async (_, res) => {
|
||||
res.end(JSON.stringify({
|
||||
foo: 'bar'
|
||||
}));
|
||||
});
|
||||
|
||||
const {data} = await axios.get(LOCAL_SERVER_URL, {
|
||||
parseReviver: (key, value) => {
|
||||
return key === 'foo' ? 'success' : value;
|
||||
},
|
||||
});
|
||||
|
||||
assert.deepStrictEqual(data, {foo: 'success'});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user