이번 포스팅의 목표는 아래 리스트 안에 든 값을 json으로 파싱하는것이다.
string jsonString = "[{\"Confidence\": 0.54,\"ClassNum\": 1}, {\"Confidence\": 0.82, \"ClassNum\": 0}]";
1. 클래스 생성(틀 만들기)
위 값을 추출하기 위해선 형태에 맞는 틀을 만들어 줘야한다.
우리는 그 틀을 클래스를 통해 만들거다.
class ClassificationResult
{
public decimal Confidence { get; set; }
public int ClassNum { get; set; }
}
클래스명은 자유롭게 생성해도 된지만 속성값(property)은 명칭을 일치시켜 줘야 한다.
(대문자, 소문자 조심)
뿐만 아니라 type도 맞춰줘야 에러가 발생하지 않는다.
[ic]jsonString[/ic]를 잘 보면 {Confidence, ClassNum} 객체가 모여 있는 리스트라 할 수 있다.
그렇기 때문에 [ic]List<ClassificationResult>[/ic]로 표현이 가능하다.
[ic]List<ClassificationResult>[/ic] => 틀 완성
2. Deserialize(역직렬화) 시키기
[ic]JsonSerializer.Deserialize[/ic]를 통해 역직렬화시키면 틀에 맞춰 값이 할당된다.
using System.Text.Json;
string jsonString = "[{\"Confidence\": 0.54,\"ClassNum\": 1}, {\"Confidence\": 0.82, \"ClassNum\": 0}]";
List<ClassificationResult> Results = JsonSerializer.Deserialize<List<ClassificationResult>>(jsonString);
3. 값 확인
foreach (ClassificationResult item in Results)
{
Console.WriteLine($"Confidence : {item.Confidence}");
Console.WriteLine($"ClassNum : {item.ClassNum}");
};
//output
Confidence : 0.54
ClassNum : 1
Confidence : 0.82
ClassNum : 0
전체코드)
using System.Text.Json;
string jsonString = "[{\"Confidence\": 0.54,\"ClassNum\": 1}, {\"Confidence\": 0.82, \"ClassNum\": 0}]";
List<ClassificationResult> Results = JsonSerializer.Deserialize<List<ClassificationResult>>(jsonString);
foreach (ClassificationResult item in Results)
{
Console.WriteLine($"Confidence : {item.Confidence}");
Console.WriteLine($"ClassNum : {item.ClassNum}");
};
class ClassificationResult
{
public decimal Confidence { get; set; }
public int ClassNum { get; set; }
}
이 글과 읽으면 좋은글
'c#' 카테고리의 다른 글
[c# ] 필드 | 프러퍼티 앞에 붙어 있는 required는 뭘까? (0) | 2023.03.13 |
---|---|
[c# EntityFramework] dbcontext 마이그레이션 롤백하는 방법 (0) | 2023.02.28 |
C#에서 파이썬 파일 실행 시키는 방법 완벽정리(with Process) (1) | 2023.01.03 |
[c#] Entity Framework 사용 방법(code-first) (0) | 2022.08.19 |
[c#] 의존성 주입(dependency Injection) 이란? (2) | 2022.08.10 |
댓글