Extras - parsing json using jackson https://mkyong.com/java/jackson-how-to-parse-json/ [How to parse JSON string with Jackson - Mkyong.com.pdf](../../../../_resources/How%20to%20parse%20JSON%20string%20with%20Jackson%20-%20Mkyong.com.pdf) [How to parse JSON string with Jackson - Mkyong.com (22_9_2024 8_29_12 am).html](../../../../_resources/How%20to%20parse%20JSON%20string%20with%20Jackson%20-%20Mkyong.com.html) ```java package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.json.*; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @SpringBootApplication public class DemoApplication { public static void main(String[] args) throws Exception{ SpringApplication.run(DemoApplication.class, args); ObjectMapper objectMapper= new ObjectMapper(); JsonNode obj=objectMapper.readTree("[\"java is oops\", \"java is not oops\", \"java is annoying\"]"); if(obj.isArray()){ for(int i=0;i` ```java import com.fasterxml.jackson.databind.ObjectMapper; List options= objmapper.readValue(q.getOptions(), objmapper.getTypeFactory().constructCollectionType(List.class, String.class)); ``` - spring cors https://spring.io/guides/gs/rest-service-cors ```java package com.example.restservicecors; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class GreetingController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @CrossOrigin(origins = "http://localhost:9000") @GetMapping("/greeting") public Greeting greeting(@RequestParam(required = false, defaultValue = "World") String name) { System.out.println("==== get greeting ===="); return new Greeting(counter.incrementAndGet(), String.format(template, name)); } } ```   Array.map equivalent in java ```java List correctOptions = questionsResponses.stream().map(questionsResponse-> questionsResponse.getCorrectOptionNumber()).toList(); ``` - converting biginteger into int `int questionID = ((BigInteger) questionResponseMap.get("questionID")).intValue();` - when using dependency ```xml org.springframework.boot spring-boot-starter-security ``` by default it adds authentication layer for accessing rest api, if that is not needed then it can be disabled by adding following bean ```java package com.example.demo; // Adjust the package name as needed import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().permitAll() // Allow all requests .and() .csrf().disable(); // Optionally disable CSRF protection return http.build(); } } ``` - configure PORT https://www.baeldung.com/spring-boot-change-port in application.properties `server.PORT=8081`