json_
Version:
Converts camelCase JavaScript objects to JSON snake_case and vise versa.
46 lines (37 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var snakeToCamelCase = function snakeToCamelCase(key) {
return (// first_name -> firstName, isbn_10 -> isbn10, scores_a_1 -> scoresA1
key.replace(/(_+[a-z0-9])/g, function (snip) {
return snip.toUpperCase().replace('_', '');
})
);
};
var camelToSnakeCase = function camelToSnakeCase(key) {
return (// firstName -> first_name, isbn10 -> isbn_10, scoresA1 -> scores_a_1
key.replace(/([A-Za-z])([0-9])/g, function (_unused, _char, digit) {
return _char + '_' + digit;
}).replace(/([A-Z])/g, function (snip) {
return '_' + snip.toLowerCase();
})
);
};
function parse(responseOrText, reviver) {
if (typeof responseOrText === 'string') {
var text = responseOrText.replace(/"([^"]*)"\s*:/g, snakeToCamelCase);
return JSON.parse(text, reviver);
}
return responseOrText.text().then(function (text) {
return JSON_.parse(text, reviver);
}); // Assume text is a Response object from fetch.
}
function stringify(value, replacer, space) {
var str = JSON.stringify(value, replacer, space);
return str.replace(/"([^"]*)"\s*:/g, camelToSnakeCase);
}
var JSON_ = {
parse: parse,
stringify: stringify
};
exports.default = JSON_;
//# sourceMappingURL=json.cjs.development.js.map