So, I was working on a project where I created an API that takes Users Location and Shops Location as a request parameter and returns the distance from the user under a certain diameter (Yes, the same functionality as used by UBER/OLA to tell us the nearest cabs or Swiggy/Zomato to tell us the nearest restaurants).
Here is the parameter I was sending as Body in Postman
shop = [ { latitude: 26.759362, longitude: 83.377485, name: “Dominoes” }, { latitude: 26.753586, longitude: 83.378468, name: “Rangrezza” }, { latitude: 26.752640,longitude: 83.370958,name: “Shahanshah” }, { latitude: 26.852785,longitude: 80.999626,name: “Royal Cafe” }, { latitude: 26.857992,longitude: 80.947613,name: “Mummas Cafe” }, { latitude: 28.672742,longitude: 77.452321,name: “Maharani Kitchen”}, { latitude: 28.677797,longitude: 77.442009,name: “Handi Dining”}, ]
user = [{“key”:”user”,”value”:”{ latitude: 100, longitude: 100 }”,”description”:””,”type”:”text”,”enabled”:true}]
After testing everything through hardcoded values when I finally moved forward and made an API, The JSON that I was sending in Body as Form Data was not getting Parsed using JSON.parse neither getting converted using JSON.stringify.
I was always getting an error of “Unexpected token l in JSON at position 4”
After doing a lot of “RIGHT” google search I came across this amazing library named as Really-Relaxed-JSON. It helps you in certain cases -
Lets Talk about some code implementation now. Import Really Relaxed JSON as a constant using const parser = require( ‘really-relaxed-json’ ).createParser();
The following code parses the data I mentioned above and gives this as a result -
The code prints 1) The req.body that I get via postman (also mentioned above). 2) The string that we get using Really Relaxed JSON. 3) The string in step 2 parse to JSON again to be used in the code (despite all the rules we are not following for the general JSON object).
This is how I was able to get this API up and running quickly.
This is a Quick and Hacky solution, not recommended to use but it helps brush up your concepts on Javascript Objects Notation. Deadlines also sometimes play an important role in getting things done and improve the solution over time.
I figured this out some years back when I was just intermediate in Nodejs.