2017-10-12 8 views
0

JSON 응답을 deserialize하려고하는데 배열이 비어 있는지 감지하고 비어 있지 않으면 값을 반환하고 싶습니다.C# JSON;

JSON 배열은 다음과 같습니다 때 빈 :

{"metrics":[]} 

를이 비어 있지 않은 경우는 아래의 같이 할 수

{"metrics":["flow"]} 

{"metrics":["energy"]} 

{"metrics":["flow","energy"]} 

어떻게이를 감지 할 수 있습니까?

NullValueHandling과 함께 작동하지 않습니다. 배열이 비어 있으면 null이 아니기 때문에 값이 전혀 없기 때문입니다.

색인에 대해 오류가 발생합니다.

배열을 클래스로 반환합니다.

+0

처럼 액세스 할 수 있습니다. 관련 코드를 게시 할 수 있습니까? – gunr2171

+2

매번 같은 방식으로 직렬화 해제 한 다음 List가 비어 있는지 확인하십시오. – Jonesopolis

+0

NewtonSoft의 JSON 디시리얼라이저가이 문제를 올바르게 처리 할 수 ​​있다고 생각합니다. 길이가 0 인 배열을 제공합니다. –

답변

3

당신이 JSON 직렬화 복원을위한 Newtonsoft.Json를 사용하는 가정 :

class Data 
{ 
    public List<string> Metrics { get; set; } 
} 

var json = "{\"metrics\":[]}"; 
var obj = JsonConvert.DeserializeObject<Data>(json); 

obj.Metrics 수집, null가 아닌 것입니다.

플러스,이 경우에도, 당신은 당신은 당신이 당신의 코드에 오류가있어 말을

var metrics = obj.Metrics ?? new List<string>();