본문 바로가기
Dart/Dart Server

[초급] Dart Server JSON 처리 및 데이터 직렬화/ dart:convert 라이브러리를 사용한 JSON 인코딩/디코딩

by Maccrey Coding 2024. 9. 6.
반응형

 

Dart에서 JSON 데이터를 처리하는 것은 웹 개발 및 데이터 통신에서 매우 중요한 작업입니다.

dart:convert 라이브러리는 JSON 데이터를 인코딩하고 디코딩하는 데 필요한 강력한 도구를 제공합니다.

이 블로그에서는 dart:convert 라이브러리를 사용하여 JSON 데이터를 처리하는 방법을 초보자도 쉽게 이해할 수 있도록 설명합니다.

1. JSON 인코딩과 디코딩 개념

  • JSON 인코딩: Dart 객체를 JSON 문자열로 변환하는 과정입니다. 이 과정은 데이터를 저장하거나 네트워크를 통해 전송할 때 사용됩니다.
  • JSON 디코딩: JSON 문자열을 Dart 객체로 변환하는 과정입니다. 이 과정은 서버로부터 받은 JSON 데이터를 사용하거나 저장된 JSON 데이터를 읽을 때 필요합니다.

2. dart:convert 라이브러리 소개

dart:convert 라이브러리는 JSON 데이터의 인코딩과 디코딩을 지원하는 클래스와 함수를 제공합니다. 주요 클래스 및 함수는 다음과 같습니다

  • jsonEncode(): Dart 객체를 JSON 문자열로 변환합니다.
  • jsonDecode(): JSON 문자열을 Dart 객체로 변환합니다.

3. JSON 디코딩

JSON 문자열을 Dart 객체로 변환하는 과정입니다. jsonDecode() 함수를 사용하여 JSON 문자열을 Dart의 Map 또는 List로 변환할 수 있습니다.

예제: JSON 문자열을 Dart 객체로 변환하기

import 'dart:convert';

void main() {
  // JSON 문자열
  var jsonString = '{"name": "John", "age": 30}';

  // JSON 문자열을 Dart 객체로 변환
  var user = jsonDecode(jsonString);

  // Dart 객체에서 데이터 접근
  print('Name: ${user['name']}'); // 결과: Name: John
  print('Age: ${user['age']}');   // 결과: Age: 30
}

이 예제에서 jsonDecode를 사용하여 JSON 문자열을 Dart의 Map 객체로 변환합니다. 변환된 객체에서 키를 사용하여 값을 접근할 수 있습니다.

예제: JSON 배열을 Dart 리스트로 변환하기

import 'dart:convert';

void main() {
  // JSON 배열 문자열
  var jsonArrayString = '[1, 2, 3, 4, 5]';

  // JSON 문자열을 Dart 리스트로 변환
  var numbers = jsonDecode(jsonArrayString);

  // Dart 리스트에서 데이터 접근
  print('First number: ${numbers[0]}'); // 결과: First number: 1
}

이 예제에서는 JSON 배열을 Dart의 List로 변환합니다. 변환된 리스트에서 인덱스를 사용하여 값에 접근할 수 있습니다.

4. JSON 인코딩

Dart 객체를 JSON 문자열로 변환하는 과정입니다. jsonEncode() 함수를 사용하여 Dart 객체를 JSON 문자열로 변환할 수 있습니다.

예제: Dart 객체를 JSON 문자열로 변환하기

import 'dart:convert';

void main() {
  // Dart 객체
  var user = {'name': 'John', 'age': 30};

  // Dart 객체를 JSON 문자열로 변환
  var jsonString = jsonEncode(user);

  // JSON 문자열 출력
  print(jsonString); // 결과: {"name":"John","age":30}
}

이 예제에서는 jsonEncode를 사용하여 Dart 객체를 JSON 문자열로 변환합니다. 변환된 문자열은 JSON 형식으로 출력됩니다.

예제: Dart 리스트를 JSON 배열로 변환하기

import 'dart:convert';

void main() {
  // Dart 리스트
  var numbers = [1, 2, 3, 4, 5];

  // Dart 리스트를 JSON 배열로 변환
  var jsonArrayString = jsonEncode(numbers);

  // JSON 배열 문자열 출력
  print(jsonArrayString); // 결과: [1,2,3,4,5]
}

이 예제에서는 Dart 리스트를 JSON 배열 문자열로 변환합니다. 변환된 문자열은 JSON 형식으로 출력됩니다.

5. 실용적인 예제: JSON 데이터와 서버 통신

JSON 데이터는 서버와 클라이언트 간의 데이터 교환에서 매우 중요합니다. 다음은 Dart를 사용하여 서버에 JSON 데이터를 전송하고, 서버로부터 JSON 데이터를 받는 예제입니다.

예제: JSON 데이터를 서버에 전송하기

import 'dart:convert';
import 'package:http/http.dart' as http;

void main() async {
  // 서버 URL
  var url = Uri.parse('http://localhost:8080/api/user');

  // Dart 객체
  var user = {'name': 'John', 'age': 30};

  // JSON 문자열로 변환
  var jsonString = jsonEncode(user);

  // POST 요청 보내기
  var response = await http.post(
    url,
    headers: {'Content-Type': 'application/json'},
    body: jsonString,
  );

  if (response.statusCode == 200) {
    print('Request succeeded');
  } else {
    print('Request failed with status: ${response.statusCode}');
  }
}

이 예제에서는 http.post를 사용하여 JSON 형식의 데이터를 서버로 전송합니다.

headers 매개변수에 Content-Type: application/json을 설정하여 데이터 형식을 명시하고, body 매개변수에 JSON 문자열을 전송합니다.

예제: 서버로부터 JSON 데이터 받기

import 'dart:convert';
import 'package:http/http.dart' as http;

void main() async {
  // 서버 URL
  var url = Uri.parse('http://localhost:8080/api/user');

  // GET 요청 보내기
  var response = await http.get(url);

  if (response.statusCode == 200) {
    // JSON 문자열을 Dart 객체로 변환
    var data = jsonDecode(response.body);
    print('Received data: $data');
  } else {
    print('Request failed with status: ${response.statusCode}');
  }
}

이 예제에서는 http.get을 사용하여 서버로부터 JSON 데이터를 받아오고, jsonDecode를 사용하여 JSON 문자열을 Dart 객체로 변환합니다.

 

Dart에서 dart:convert 라이브러리를 사용하여 JSON 데이터를 인코딩하고 디코딩하는 방법에 대해 알아보았습니다.

JSON 데이터는 데이터 저장과 전송에서 매우 중요한 역할을 하며, Dart의 jsonEncode와 jsonDecode를 통해 간편하게 처리할 수 있습니다.

이러한 기본적인 이해를 바탕으로 다양한 데이터 처리 작업을 효율적으로 수행할 수 있습니다.

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

반응형