플러터에서 json을 사용하기 위해서는 아래와 같이 4가지의 과정을 이해해야한다.
- 자료형에 대한 이해
- json 스트링을 Map<String, dynamic> 자료형으로 변환
- Map<String, dynamic> 자료형을 객체로 변환
- 객체를 json 스트링으로 변환.
{
"employees": [
{
"name": "Surim",
"lastName": "Son"
},
{
"name": "Someone",
"lastName": "Huh"
},
{
"name": "Someone else",
"lastName": "Kim"
}
]
}
! 이 자료형들로 보게되면, 텍스트 데이터인 JSON을 Map<String, dynamic>을 통해 다루고, 이 다뤄진 데이터를 객체로 만들면 되는 것이다. !
String jsonString = '''
{
"name" : "hallur",
"age" : 27,
"job" : "DJ",
"is_man" : true
}
''';
JSON 데이터를 우선적으로 이렇게 String화 시킨다. 보기에 형태는 Key-value로 이루어져있는 것을 알 수 있다.
이러한 String값을 jsonDecode() 라는 메서드를 통해 Map형태로 파싱한다.
Map<String, dynamic> jsonData = jsonDecode(jsonString);
print(jsonData['name']); // hallur 출력
print(jsonData['age']); // 27 출력
print(jsonData['job']); // DJ 출력
print(jsonData['is_man']); // true 출력
jsonDecode를 통해 Map<String, dynamic> 형태로 파싱했다. 실제로 코드를 실행해보면 아래와 위와같은 출력값을 기대할 수 있다.
JSON 스트링을 JSON 자료형으로 변환켰으니, 이젠 객체로 변환할 차례이다.
이 과정을 수행하기 위해선 먼저 json데이터와 매칭되는 객체를 정의해줘야함.
class User {
String name;
int age;
String job;
bool isMan;
User({
this.name,
this.age,
this.job,
this.isMan
});
}
이렇게 정의하고 나면 클래스 내부의 팩토리 함수를 이용하여 fromJson이라는 함수를 정의해주어야 합니다.
[출처] : https://totally-developer.tistory.com/121
[출처] : https://velog.io/@surim014/JSON%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
[출처] : https://bebesoft.tistory.com/11