2017-04-24 1 views
1

: 나는 이러한 클래스를 생성 한역 직렬화 JSON 데이터 및 표시 C# 나는 다음과 같은 데이터를 역 직렬화와 C#을 사용하여 표시하는 것을 시도하고있다

{ 
    "_links":{ 
     "self":{ 
     "href":"http://api.football-data.org/v1/competitions/426/teams" 
     }, 
     "competition":{ 
     "href":"http://api.football-data.org/v1/competitions/426" 
     } 
    }, 
    "count":"20", 
    "teams":[ 
     { 
     "_links":{ 
      "self":{ 
       "href":"http://api.football-data.org/v1/teams/322" 
      }, 
      "fixtures":{ 
       "href":"http://api.football-data.org/v1/teams/322/fixtures" 
      }, 
      "players":{ 
       "href":"http://api.football-data.org/v1/teams/322/players" 
      } 
     }, 
     "name":"Hull City FC", 
     "code":"HUL", 
     "shortName":"Hull", 
     "squadMarketValue":"122,250,000 €", 
     "crestUrl":"http://upload.wikimedia.org/wikipedia/de/a/a9/Hull_City_AFC.svg" 
     }, 
     { 
     "_links":{ 
      "self":{ 
       "href":"http://api.football-data.org/v1/teams/338" 
      }, 
      "fixtures":{ 
       "href":"http://api.football-data.org/v1/teams/338/fixtures" 
      }, 
      "players":{ 
       "href":"http://api.football-data.org/v1/teams/338/players" 
      } 
     }, 
     "name":"Leicester City FC", 
     "code":"LCFC", 
     "shortName":"Foxes", 
     "squadMarketValue":"205,300,000 €", 
     "crestUrl":"http://upload.wikimedia.org/wikipedia/en/6/63/Leicester02.png" 
     } 
    ] 
} 

는 :

public class Team 
{ 
    public Links2 _links { get; set; } 
    public string name { get; set; } 
    public string code { get; set; } 
    public string shortName { get; set; } 
    public string squadMarketValue { get; set; } 
    public string crestUrl { get; set; } 
} 

public class RootObject 
{ 
    public Links _links { get; set; } 
    public int count { get; set; } 
    public List<Team> teams { get; set; } 
} 

나는 다음 구문 분석 및 표시하려 데이터 :

private void ParseAndDisplay(JsonValue json) 
{ 
    dynamic jsonObj = JsonConvert.DeserializeObject(json); 

    foreach (var obj in jsonObj.teams) 
    { 
     Console.Out.WriteLine(obj.name); 
    } 
} 

그러나 foreach 루프를 입력 할 때 끊어지는 것처럼 보입니다. 아무도 내가 누락되거나 잘못한 것을 말할 수 있습니까? 처리되지 않은 예외 오류가 나타납니다.

+2

도 유효하지 않습니다 다음 코드를 추가합니다. 역 직렬화에 필요한 실제 json 문자열을 먼저 보도록하겠습니다. 또한 오류 또는 예외를 추가하십시오. –

+0

rootobject를 사용해보십시오. objs = JsonConvert.DeserializeObject (json.ToString) –

+1

입력 된 클래스 * 또는 * 동적 객체를 사용할지 결정해야합니다. – Filburt

답변

0

질문을 오류로 업데이트하지 않는 한 코드는 정확합니다.

좋아, .net에서 할 수있는 또 하나의 방법을 알려 드리겠습니다. Linq

  1. 참조 Newtonsoft.Json.Linq을 프로젝트에 사용할 수도 있습니다.

그리고 당신이 게시 JSON

dynamic jsonObj = JObject.Parse(your_JSON_string); 

foreach (var obj in jsonObj.teams) 

{ 
    Console.WriteLine(obj.name); 
} 
1

팀 목록에서 팀 이름을 추출하려면 목록을 쿼리해야합니다.

RootObject jsonObj = JsonConvert.DeserializeObject<RootObject>(json); 

foreach (var obj in jsonObj.teams.Select(x => x.name)) 
{ 
    Console.Out.WriteLine(obj); 
}