2016-09-05 2 views
0

이처럼 Json 파일이 있습니다.역 직렬화 복합 Json (클래스)

{ 
"_request": { 
    "api_ver": 1, 
    "route": "/api/v2/u/SunDwarf-21353/stats/general" 
}, 
"average_stats": { 
    "damage_done_avg": 3987.0, 
    "deaths_avg": 5.68, 
    "defensive_assists_avg": 0.0, 
    "eliminations_avg": 10.47, 
    "final_blows_avg": 6.12, 
    "healing_done_avg": 589.0, 
    "melee_final_blows_avg": 0.03, 
    "objective_kills_avg": 3.06, 
    "objective_time_avg": 0.007222222222222223, 
    "offensive_assists_avg": 0.0, 
    "solo_kills_avg": 2.3, 
    "time_spent_on_fire_avg": 0.008055555555555555 
}, 
"battletag": "SunDwarf-21353", 
"game_stats": { 
    "cards": 36.0, 
    "damage_done": 478462.0, 
    "damage_done_most_in_game": 13303.0, 
    "deaths": 682.0, 
    "defensive_assists": 39.0, 
    "defensive_assists_most_in_game": 11.0, 
    "eliminations": 1257.0, 
    "eliminations_most_in_game": 26.0, 
    "environmental_deaths": 12.0, 
    "environmental_kills": 8.0, 
    "final_blows": 735.0, 
    "final_blows_most_in_game": 16.0, 
    "games_played": 120.0, 
    "games_won": 59.0, 
    "healing_done": 70670.0, 
    "healing_done_most_in_game": 7832.0, 
    "kpd": 1.84, 
    "medals": 304.0, 
    "medals_bronze": 102.0, 
    "medals_gold": 100.0, 
    "medals_silver": 102.0, 
    "melee_final_blows": 4.0, 
    "melee_final_blows_most_in_game": 2.0, 
    "multikill_best": 3.0, 
    "multikills": 5.0, 
    "objective_kills": 368.0, 
    "objective_kills_most_in_game": 10.0, 
    "objective_time": 0.8880555555555555, 
    "objective_time_most_in_game": 0.026944444444444444, 
    "offensive_assists": 13.0, 
    "offensive_assists_most_in_game": 7.0, 
    "recon_assists": 9.0, 
    "solo_kills": 277.0, 
    "solo_kills_most_in_game": 16.0, 
    "time_played": 15.0, 
    "time_spent_on_fire": 0.9961111111111111, 
    "time_spent_on_fire_most_in_game": 0.08833333333333333 
}, 
"overall_stats": { 
    "avatar": "https://blzgdapipro-a.akamaihd.net/game/unlocks/0x02500000000008E8.png", 
    "comprank": null, 
    "games": 120, 
    "level": 24, 
    "losses": 61, 
    "prestige": 0, 
    "win_rate": 49, 
    "wins": 59 
}, 
"region": "eu" 
} 

그래서 저는 Deserialie C#에서 이것을 원합니다. 그래서 json2csharp.com 클래스로 만듭니다.

이제는 이러한 모든 클래스를 인스턴스화 할 수는 있지만 GameStats 또는 average_stats 인스턴스가 필요하지 않습니다.

내 라인은 무엇입니까?이 클래스는 어떻게 만들 수 없습니까? D

안부 : 내 영어 죄송합니다

, 당신은 내 문제를 따를 수 있기를 바랍니다. alex

+0

당신이 당신의 코드를 보여줄 수 :

public class RootObject { public class GameStats { private GameStats() { } //Code omitted } public class Request { private Request() { } //Code omitted } public class AverageStats { private AverageStats() { } //Code omitted } public class OverallStats { private OverallStats() { } //Code omitted } public Request _request { get; set; } public AverageStats average_stats { get; set; } public string battletag { get; set; } public GameStats game_stats { get; set; } public OverallStats overall_stats { get; set; } public string region { get; set; } } 

컴파일러 오류 준다? 어떻게 이러한 모든 클래스를 인스턴스화합니까? –

답변

0

그렇다면 디시리얼라이저 사용법을 모른다는 뜻입니까? 간단하게 다음과 같이 그것을 할 this link

를 살펴 보자 :

string json = @"{ 
    'Email': '[email protected]', 
    'Active': true, 
    'CreatedDate': '2013-01-20T00:00:00Z', 
    'Roles': [ 
    'User', 
    'Admin' 
    ] 
}"; 

Account account = JsonConvert.DeserializeObject<Account>(json); 

Console.WriteLine(account.Email); 
// [email protected] 
1

간단히 원치 않는 특성이 디시리얼라이저를 생략 RootObject

public class RootObject 
{ 
    public Request _request { get; set; } 
    //public AverageStats average_stats { get; set; } 
    public string battletag { get; set; } 
    //public GameStats game_stats { get; set; } 
    public OverallStats overall_stats { get; set; } 
    public string region { get; set; } 
} 

를 형성 제거합니다.

0

intellisense에 표시된 클래스를 중지하고 매개 변수없는 개인 생성자를 추가하려면 클래스를 중첩 시키십시오. 개인 생성자에 대해 걱정하지 마십시오. Json.NET은 리플렉션을 사용하여 클래스를 인스턴스화합니다.

//'RootObject.GameStats.GameStats()' is inaccessible due to its protection level 
var myClass = new RootObject.GameStats();