Top JSON Interview Questions

author image Hirely
at 10 Jan, 2025

Question: What is the difference between JSON and JSONP?

Answer:

JSON (JavaScript Object Notation) and JSONP (JSON with Padding) are both used for data exchange, but they serve different purposes and have distinct characteristics, especially when it comes to cross-domain requests in web development. Below are the main differences between JSON and JSONP:


1. Purpose and Use Case

  • JSON:

    • JSON is a lightweight, text-based data format used for serializing and transmitting data between a client and a server. It is commonly used to exchange data in APIs, web services, and JavaScript applications.
    • JSON is typically used for same-origin requests, where the client and server are on the same domain.
  • JSONP:

    • JSONP is a technique used to overcome the same-origin policy (SOP) in browsers, which restricts web pages from making requests to a different domain than the one that served the web page.
    • JSONP allows you to load data from a server on a different domain using a <script> tag, which bypasses the SOP restrictions.

2. Mechanism of Data Retrieval

  • JSON:

    • Data is typically retrieved using AJAX (Asynchronous JavaScript and XML) with the XMLHttpRequest object or the fetch() API in modern browsers.
    • The request is made using HTTP methods like GET, POST, or PUT, and the response is usually in JSON format.
  • JSONP:

    • JSONP relies on the use of the <script> tag to fetch data from a different domain. The response from the server is wrapped in a function call (the padding) that is executed as a callback in the client’s script.
    • The response is a JavaScript file that contains the data, and the server wraps the data in a function to ensure it can be executed as a script.

3. Cross-Domain Requests

  • JSON:

    • In the case of same-origin requests, you can use JSON without any issues. However, for cross-origin requests, modern browsers implement CORS (Cross-Origin Resource Sharing), which requires the server to explicitly allow requests from different origins by sending appropriate headers.
    • CORS is the standard way to make cross-origin requests with JSON.
  • JSONP:

    • JSONP was specifically created to bypass the same-origin policy by using <script> tags, which are not restricted by the same-origin policy.
    • Since the browser treats <script> tags as safe, it allows scripts to be loaded from any domain without requiring CORS headers from the server.

4. Security Considerations

  • JSON:

    • JSON is generally safer than JSONP because it does not execute the response as code.
    • Since JSON is pure data, it can be safely parsed and processed using JSON.parse() without executing any JavaScript.
  • JSONP:

    • JSONP can be less secure because it involves executing JavaScript code that is returned by the server. This opens the possibility for Cross-Site Scripting (XSS) attacks if the response contains malicious code.
    • Since the response is executed as JavaScript, a malicious server could inject harmful code into the response, which could compromise the security of the client.

5. Data Format and Response Structure

  • JSON:

    • The server returns a pure JSON object, typically in the form of { key: value, key: value, ... }.
    • The client retrieves the response and parses it with JSON.parse() to work with the data.
  • JSONP:

    • The server returns the JSON data wrapped inside a callback function (the “padding”). For example:
      callbackFunction({
        "name": "John",
        "age": 30
      });
    • The client must define a callback function that will be executed when the JSONP response is received.

6. Browser Support

  • JSON:

    • JSON is supported by all modern browsers and is part of the XMLHttpRequest and fetch() APIs. It follows the same-origin policy for security, which is enforced by browsers but can be bypassed using CORS.
  • JSONP:

    • JSONP works by exploiting the <script> tag to load data, and since <script> tags are not bound by the same-origin policy, it works across all modern browsers.
    • However, JSONP is becoming less common and is now rarely used, as CORS and other modern techniques are preferred for cross-origin requests.

7. Error Handling

  • JSON:

    • JSON allows more straightforward error handling. If there is an error with the request (e.g., network failure), it can be caught and handled using try-catch or promise-based mechanisms (with fetch()).
    • Similarly, the server may respond with an appropriate HTTP status code, and the error can be handled accordingly.
  • JSONP:

    • JSONP lacks a robust error-handling mechanism. If the server does not return a valid callback or there is an issue with the script loading, the error is harder to capture. The script tag doesn’t provide a direct way to handle failed requests.
    • Some implementations of JSONP use timeout mechanisms or error-handling functions, but they are less reliable than native error handling in AJAX requests.

8. Performance

  • JSON:
    • JSON requests typically have better performance compared to JSONP because they use standard HTTP methods and don’t require extra processing on the client side to wrap data in a function.
  • JSONP:
    • JSONP requests can increase the complexity of the client-side code and introduce additional overhead due to the wrapping of data in a callback function. However, because JSONP uses the <script> tag, which is loaded asynchronously, it does not block the page rendering as much as synchronous requests might.

9. Modern Use

  • JSON:
    • JSON is the preferred format for web APIs and cross-origin requests using CORS. Modern browsers and APIs rely heavily on JSON for data exchange because of its simplicity and flexibility.
  • JSONP:
    • JSONP is deprecated in favor of CORS and other more secure methods for cross-origin communication. It is mostly used in legacy applications or when working with older APIs that do not support CORS.

Summary of Differences:

FeatureJSONJSONP
PurposeData exchange in same-origin or cross-origin (via CORS)Cross-origin data retrieval (bypasses same-origin policy)
Data FormatPure JSON dataJSON wrapped in a callback function
Cross-OriginRequires CORS support from the serverBypasses same-origin policy with <script> tag
SecuritySafer, no code executionLess secure, executes returned JavaScript
ParsingUses JSON.parse()Parses via executing a callback function
Error HandlingStandard error handling mechanisms (e.g., try-catch, status codes)Limited error handling, requires timeouts or custom functions
Browser SupportAll modern browsersAll modern browsers
PerformanceFaster, standard AJAXMay introduce extra overhead due to callback handling
Use CaseWidely used in modern web APIsDeprecated, used in legacy systems

Conclusion:

  • JSON is the standard format for data interchange, used for both same-origin and cross-origin requests via CORS. It is simpler, more secure, and widely supported.
  • JSONP was a workaround to bypass the same-origin policy, primarily used in the past for cross-domain requests. However, it is now deprecated due to security concerns and the availability of CORS as a safer and more flexible method.

Question: How do you parse JSON in JavaScript?

Answer:

In JavaScript, JSON (JavaScript Object Notation) is often used to represent data as a string, which can be easily transmitted between a server and a client. To use this data in your JavaScript code, it needs to be parsed into a JavaScript object.

You can parse JSON using the built-in JSON.parse() method in JavaScript.


Syntax:

JSON.parse(jsonString);
  • jsonString: A valid JSON string that you want to parse into a JavaScript object.

Steps:

  1. Ensure that the JSON string is properly formatted. For example, it should be enclosed in double quotes for strings, use commas to separate key-value pairs, and have the correct data types (strings, numbers, arrays, objects, booleans, and null).
  2. Use JSON.parse() to convert the JSON string into a JavaScript object.

Example:

1. Basic Example

const jsonString = '{"name": "John", "age": 30, "city": "New York"}';

const jsonObj = JSON.parse(jsonString);

console.log(jsonObj.name);  // Output: John
console.log(jsonObj.age);   // Output: 30
console.log(jsonObj.city);  // Output: New York
  • In this example, jsonString contains a valid JSON object as a string. The JSON.parse() method converts it into a JavaScript object, and then you can access the properties of the object just like any other JavaScript object.

2. Example with Arrays

const jsonArrayString = '[1, 2, 3, 4, 5]';

const jsonArray = JSON.parse(jsonArrayString);

console.log(jsonArray);  // Output: [1, 2, 3, 4, 5]
console.log(jsonArray[0]);  // Output: 1
  • This example shows how you can parse a JSON string that represents an array and work with the array elements.

3. Example with Nested Objects

const jsonString = '{"person": {"name": "John", "age": 30}, "city": "New York"}';

const parsedObject = JSON.parse(jsonString);

console.log(parsedObject.person.name);  // Output: John
console.log(parsedObject.city);         // Output: New York
  • If the JSON string contains nested objects, you can still access the nested properties using dot notation.

Error Handling with try-catch

Parsing JSON might fail if the string is not correctly formatted. To handle errors, you can use a try-catch block to catch any exceptions during parsing:

const invalidJsonString = '{"name": "John", "age": 30';  // Missing closing bracket

try {
  const parsedObject = JSON.parse(invalidJsonString);
  console.log(parsedObject);
} catch (error) {
  console.log('Error parsing JSON:', error);  // Output: Error parsing JSON: SyntaxError: Unexpected end of JSON input
}
  • If the JSON string is invalid (e.g., missing a closing bracket), JSON.parse() will throw a SyntaxError, which can be caught and handled in the catch block.

Summary:

  • Use JSON.parse() to convert a JSON string into a JavaScript object.
  • Ensure that the string is a valid JSON format.
  • Handle errors using try-catch to manage any parsing issues, especially when dealing with potentially malformed JSON.

Read More

If you can’t get enough from this article, Aihirely has plenty more related information, such as JSON interview questions, JSON interview experiences, and details about various JSON job positions. Click here to check it out.

Related Posts

Trace Job opportunities

Hirely, your exclusive interview companion, empowers your competence and facilitates your interviews.

Get Started Now