json_ v3.0.1
json_
Converts camelCase JavaScript objects to JSON snake_case and vise versa. This is a direct replacement for the built-in JSON object. In fact, this simply wraps the built-in JSON object. Very handy when your back_end APIs are not build using Node.js.
It also supports converting a fetch
response stream into a camelCased object.
NOTE: New version 3.0 completely re-written in TypeScript, so it's fully typed.
First, get the package
Install json_ and include it in your build.
npm install json_ --save
Then import it like this.
import JSON_ from 'json_';
Example
const example = {
firstName: 'John',
lastName: 'Doe',
isbn10: '1234567890',
};
console.log(JSON_.stringify(example));
// {"first_name":"John","last_name":"Doe", "isbn_10": "1234567890"}
And vise versa.
import JSON_ from 'json_';
const str = '{"ultimate_answer": 42}';
console.log(JSON_.parse(str));
// {ultimateAnswer: 42}
Using with fetch
You can use json_
directly with the JavaScript fetch
API to convert
the Response
into an Object
with snakeCase.
Let's say you have a function that returns snake_case weather data, something like this.
const fetchWeather = async zip => {
const response = fetch(`${weatherUrl}?zip=${zip}`);
const json = await response.json();
return json;
};
const data = await fetchWeather('10285');
console.log(data);
// {current_temp: 85, reporting_station: 'New York, NY'}
You can easily convert the resolved object to camelCase by replacing the call to Response.json()
to a call to JSON_.parse(Response)
, like this.
- const json = await response.json();
+ const json = await JSON_.parse(response);
The resulting code looks like this
import JSON_ from 'json_';
const fetchWeather = async zip => {
const response = fetch(`${weatherUrl}?zip=${zip}`);
const json = await JSON_.parse(response);
return json;
};
const data = await fetchWeather('10285');
console.log(data);
// {currentTemp: 85, reportingStation: 'New York, NY'}
Tests!
100% unit test coverage. To run the unit tests and get a coverage report:
npm test coverage
License
Copyright Donavon West. Released under MIT license
3 years ago
3 years ago
7 years ago
7 years ago
7 years ago
7 years ago
11 years ago
11 years ago
11 years ago
11 years ago