Flutter/Flutter FAQ

Flutter 플러터에서 JSON을 해독하는 방법은 무엇인가요?, How to decode JSON in Flutter?

독학코딩 2024. 1. 3. 09:01
반응형

질문


플러터에서 JSON을 디코딩하는 방법은 어떻게 되나요?

질문은 간단하지만, 답은 제게는 쉽지 않습니다.

저는 많은 JSON 문자열을 사용하는 프로젝트를 가지고 있습니다. 기본적으로 앱과 서버 간의 모든 통신은 JSON을 통해 이루어집니다.

제가 JSON을 처리하기 위해 JSON.decode(json_string)을 사용해왔지만, 오늘 플러터 코어 (0.5.8-pre.178)를 업데이트했더니 JSON.decode를 더 이상 사용할 수 없습니다.

도움을 얻기 위해 플러터 문서에 가봤는데, 여전히 JSON.decode를 사용하라고 나와 있습니다.

그래서 이제부터 플러터에서 JSON을 디코딩하는 방법은 무엇인가요?


답변


다음과 같은 HTML을 한국어로 번역하되, HTML 태그와 태그를 포함한 영어 텍스트를 보존하세요.

import 'dart:convert';

인라인 예제

String rawJson = '{"name":"Mary","age":30}';

Map<String, dynamic> map = jsonDecode(rawJson); // import 'dart:convert';

String name = map['name'];
int age = map['age'];

Person person = Person(name, age);

참고: VS Code에서 서버 측 Dart를 사용할 때 이 작업을 수행하는 경우, 유형을 지정해야 했습니다.

Map<String, dynamic> map = jsonDecode(rawJson) as Map<String, dynamic>;

모델 클래스 예제

모델 클래스에는 맵 변환 로직이 포함되어 있습니다.

class Person {
  String name;
  int age;
  Person(this.name, this.age);

  // named constructor
  Person.fromJson(Map<String, dynamic> json)
      : name = json['name'],
        age = json['age'];

  // method
  Map<String, dynamic> toJson() {
    return {
      'name': name,
      'age': age,
    };
  }
 
}

JSON 변환은 다음과 같이 수행됩니다.

String rawJson = '{"name":"Mary","age":30}';
Map<String, dynamic> map = jsonDecode(rawJson);
Person person = Person.fromJson(map);

전체 답변은 여기에서 확인할 수 있습니다.

직렬화 코드 생성

직렬화 코드를 작성할 때 실수하기 쉽기 때문에, 일반적으로 Dart 팀에서 제공하는 json_serializable 패키지를 사용하는 것이 좋습니다. 그러나 다양한 방법의 장단점에 대해서는 여기에서 읽을 수 있습니다.

더 많은 옵션을 원한다면 built_value 패키지도 확인할 수 있습니다.

참고 자료

반응형