2017-04-25 19 views
2

言語C#。コンソールアプリケーション。JsonドキュメントをC#オブジェクトに逆シリアル化します。

{"Cars":{"Mercedes": 1,"BMW": 3,"Toyota": 0},"Bikes":{"Kawasaki": 5,"Pulsar": 4}} 

私は、次のいるクラス:

public class Vehicles 
    { 
    public Cars cars {get; set;} 
    public Bikes bikes {get; set;} 
    } 

    public class Cars 
    { 
     Dictionary<string, int> carcount {get; set;} 
    } 

    public class Bikes 
    { 
     Dictionary<string, int> bikecount {get; set;} 
    } 

は、私はクラスにJSONをデシリアライズする必要が

は、私は次の形式でのJSON文書を持っています。 私はヌルとしてバイクと車の両方で辞書を取得この

Vehicles jsondata = JsonConvert.DesrializeObject<Vehicles>(jsonstring); 

を試してみました。私は非常に基本的な何かを逃していることを知っしかし、何を正確に把握することはできません。
また、json文字列形式は変更できません。しかし、クラス構造は変わる可能性があります。

答えて

2

を。代わりに、あなたはすぐに辞書を持っています。

public class Vehicles 
{ 
    public Dictionary<string, int> Cars {get; set;} 
    public Dictionary<string, int> Bikes {get; set;} 
} 

プロパティ名は大文字と小文字が区別されるので、ケースを混在させるときは十分注意してください。

は(おそらくの手順に従うことによって、この少し楽 in this answerを説明して行われている可能性があります。残念ながら、それは考慮に辞書を取ることはありません。それは、少なくともあなたの辞書があるべきここでの出発点を与える。)

+0

@ジョンとあなたの両方は、同じ答えであり、どちらも正しいです。私は彼が早く答えたので受け入れられるようにジョンの答えを選んでいます。 – Ansh43

+0

もう1つがいくつかのコードをダンプするだけであれば、すぐに投稿することは困難です。 –

+0

私は、問題が2つを比較して自明であると思いました。プラス私はそれが私よりも良いと感じたので、私はあなたの答えをupvoteでした。 – john

2

あなたはこの必要があります:あなたはcarcountまたはbikecountと呼ばれるレベルを持っていない

public class Vehicles 
{ 
    public Dictionary<string, int> Cars { get; set; } 
    public Dictionary<string, int> Bikes { get; set; } 
} 
関連する問題