본문 바로가기
백엔드/스프링 프레임워크 단어정리

ajax에서 return 값이 String이 아닌 JSON 형태여야 하는 이유

by maverick11471 2024. 7. 16.

[결론]

key와 value로 구성되어야 value 값을 "쉽게" 꺼낼 수 있다.

 

string은 value값이 없기 때문에 꺼낼 수 없다. 만약 꺼내려면 indexOf, charAt 등 메서드를 이용해서 복잡하게 꺼내야 한다.

 

따라서 '객체' 형태인 JSON 형태로 return 값을 가져야 한다.


 

JSON (JavaScript Object Notation) 문자열은 일반적인 문자열과 몇 가지 차이점이 있습니다.

이러한 차이점은 JSON 문자열을 처리하는 데 유용한 기능을 제공합니다.

다음은 JSON 문자열에서만 사용할 수 있는 기능과 일반 문자열과의 차이점을 예시와 함께 설명합니다:

  1. JSON 구문 분석(Parsing):
    • JSON 문자열은 JSON.parse() 함수를 사용하여 JavaScript 객체로 변환할 수 있습니다.
    • 예시:

      javascript

      const jsonString = '{"name": "John", "age": 30}';
      const obj = JSON.parse(jsonString);
      console.log(obj.name); // Output: "John"
      
    • 일반 문자열은 이와 같은 구문 분석 기능이 없습니다.
  2. JSON 직렬화(Stringification):
    • JSON 객체는 JSON.stringify() 함수를 사용하여 JSON 문자열로 변환할 수 있습니다.
    • 예시:

      javascript

      const obj = {name: "John", age: 30};
      const jsonString = JSON.stringify(obj);
      console.log(jsonString); // Output: '{"name":"John","age":30}'
      
    • 일반 문자열은 이와 같은 직렬화 기능이 없습니다.
  3. 구조화된 데이터 표현:
    • JSON 문자열은 객체, 배열, 숫자, 문자열, 부울 값 및 null 값과 같은 구조화된 데이터를 표현할 수 있습니다.
    • 예시:

      javascript

      const jsonString = '{"name": "John", "age": 30, "hobbies": ["reading", "swimming"]}';
      
    • 일반 문자열은 이와 같은 구조화된 데이터 표현이 어렵습니다.
  4. 유효성 검사:
    • JSON 문자열은 엄격한 구문 규칙을 따르며, JSON.parse() 함수는 유효성 검사를 수행합니다.
    • 예시:

      javascript

      const invalidJsonString = '{"name": "John", "age": 30,}'; // 쉼표 뒤에 추가 데이터가 없음
      const obj = JSON.parse(invalidJsonString); // SyntaxError: Unexpected token } in JSON at position 34
      
    • 일반 문자열은 이와 같은 유효성 검사 기능이 없습니다.
  5. 데이터 교환 및 저장:
    • JSON 문자열은 데이터를 교환하고 저장하는 데 널리 사용되는 형식입니다.
    • 예시:
      • 웹 API에서 데이터를 전송하고 받을 때 JSON 형식을 사용합니다.
      • 데이터베이스에 데이터를 저장할 때 JSON 형식을 사용할 수 있습니다.
    • 일반 문자열은 이와 같은 데이터 교환 및 저장 용도로 사용되지 않습니다.

 

요약하면, JSON 문자열은 구문 분석, 직렬화, 구조화된 데이터 표현, 유효성 검사 및 데이터 교환 및 저장과 같은 특별한 기능을 제공하는 반면, 일반 문자열은 이러한 기능이 없습니다. 이러한 차이로 인해 JSON 문자열은 데이터 처리와 교환에 매우 유용합니다.