Open DevShivmohan opened 2 years ago
hi i am interested to work on this issue
Used google gson library
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.1</version>
</dependency>
package com.shiv.exception;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public class OnlineTest {
public static void main(String[] args) throws Throwable {
System.out.println("Discounted price = " + discountedPrice(74001795));
System.out.println("Discounted price = " + discountedPrice(740017));
}
/**
* Call an API using simple java net
* And gson library to convert response into object
* @param barcode
* @return
* @throws Throwable
*/
public static int discountedPrice(int barcode) throws Throwable {
URL url = new URL("https://jsonmock.hackerrank.com/api/inventory?barcode=" + barcode);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestProperty("accept", "application/json");
httpURLConnection.setRequestMethod("GET");
int responseCode = httpURLConnection.getResponseCode();
if (responseCode != 200)
return -1;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
Gson gson = new Gson();
DataList dataList = gson.fromJson(stringBuilder.toString(), DataList.class);
System.out.println(dataList);
if (dataList.getData().isEmpty())
return -1;
Data data = dataList.getData().get(0);
return (int) (data.getPrice() - ((data.getDiscount() / 100) * data.getPrice()));
}
}
class DataList {
private double page;
private double per_page;
private double total;
private double total_pages;
private List<Data> data;
public double getPage() {
return page;
}
public void setPage(double page) {
this.page = page;
}
public double getPer_page() {
return per_page;
}
public void setPer_page(double per_page) {
this.per_page = per_page;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
public double getTotal_pages() {
return total_pages;
}
public void setTotal_pages(double total_pages) {
this.total_pages = total_pages;
}
public List<Data> getData() {
return data;
}
public void setData(List<Data> data) {
this.data = data;
}
@Override
public String toString() {
return "DataList{" +
"page=" + page +
", per_page=" + per_page +
", total=" + total +
", total_pages=" + total_pages +
", data=" + data +
'}';
}
}
class Data {
private String barcode;
private String item;
private String category;
private double price;
private double discount;
private double available;
@Override
public String toString() {
return "Data{" +
"barcode='" + barcode + '\'' +
", item='" + item + '\'' +
", category='" + category + '\'' +
", price=" + price +
", discount=" + discount +
", available=" + available +
'}';
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getDiscount() {
return discount;
}
public void setDiscount(double discount) {
this.discount = discount;
}
public double getAvailable() {
return available;
}
public void setAvailable(double available) {
this.available = available;
}
}
json-simple Library
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
Code
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ApiCaller {
public static void main(String[] args) {
try {
// Specify the API endpoint URL
URL url = new URL("https://api.example.com/data");
// Open a connection to the URL
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// Set the request method (GET, POST, etc.)
connection.setRequestMethod("GET");
// Get the response code
int responseCode = connection.getResponseCode();
// Check if the request was successful (HTTP 200 OK)
if (responseCode == HttpURLConnection.HTTP_OK) {
// Read the response from the API
InputStreamReader in = new InputStreamReader(connection.getInputStream());
// Parse the JSON response using JSON.simple
JSONParser parser = new JSONParser();
JSONObject jsonResponse = (JSONObject) parser.parse(in);
// Extract the 'data' array from the response
JSONArray dataArray = (JSONArray) jsonResponse.get("data");
// Iterate through the array and convert each JSON object to a Java object
for (Object dataObj : dataArray) {
JSONObject data = (JSONObject) dataObj;
// Convert JSON fields to Java fields
long barcode = (Long) data.get("barcode");
String item = (String) data.get("item");
String category = (String) data.get("category");
double price = (Double) data.get("price");
double discount = (Double) data.get("discount");
double available = (Double) data.get("available");
// Create a custom Java object
Data responseObject = new Data(barcode, item, category, price, discount, available);
// Now you can use the 'responseObject' as a Java object
System.out.println(responseObject);
}
} else {
System.out.println("Error: " + responseCode);
}
// Close the connection
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Data {
long barcode;
String item;
String category;
double price;
double discount;
double available;
public Data(long barcode, String item, String category, double price, double discount, double available) {
this.barcode = barcode;
this.item = item;
this.category = category;
this.price = price;
this.discount = discount;
this.available = available;
}
@Override
public String toString() {
return "Data{" +
"barcode=" + barcode +
", item='" + item + '\'' +
", category='" + category + '\'' +
", price=" + price +
", discount=" + discount +
", available=" + available +
'}';
}
}
API call through javascript