2017-05-24 8 views
-4

私はフランス語ですので、英語が不明な場合はごめんなさい... 私は6週間の作業場所にいます(このドメインではかなり新しいです..私は実際のDB(json)をSQLで実際のサーバに転送し、すべてをC#で転送したいと考えています。 JSONファイルをC#で読み込み、C#オブジェクトに変換する必要があります。C#でjsonファイルを読み込んでC#オブジェクトに変換する

JSON DBの例があります:私はプロじゃないとあなたの助けをありがとうございましたことを心に留めておいてください

public class Item 
    { 
     public string Id { get; set; } 
     public string UploadDate { get; set; } 
     public string Uploader { get; set; } 
     public string Category { get; set; } 
     public string Title { get; set; } 
     public string Description { get; set; } 
     public string Thumbnail { get; set; } 
     public int Duration { get; set; } 
     public string Path { get; set; } 
    } 

{ 
    "updated": "2015-05-20T13:16:00.000Z", 
    "title": "Chaîne Activité", 
    "description": "Vidéos des activités diverses du Webcenter", 
    "items": [ 
    { 
     "id": "77B6573B-47E4-4D60-A6FC-99E81EF05404", 
     "uploaded": "2014-07-02T12:56:00.000Z", 
     "uploader": "Inconnu", 
     "category": "activité//Pléniére", 
     "title": "Teaser de la plénière 2014", 
     "description": "Marc Emmanuel de 'Tous Ensemble' et Axa Atout Coeur vous invite à la 3éme plénière.", 
     "thumbnail": "/Content/img/video/activite/teaser-pleniere-2014-.png", 
     "duration": 66, 
     "path": "Plénière-2014-teaser.mp4" 
    }` 

は、私のクラスがあります!

public class Item 
{ 
    public string id { get; set; } 
    public string uploaded { get; set; } 
    public string uploader { get; set; } 
    public string category { get; set; } 
    public string title { get; set; } 
    public string description { get; set; } 
    public string thumbnail { get; set; } 
    public int duration { get; set; } 
    public string path { get; set; } 
} 

public class RootObject 
{ 
    public string updated { get; set; } 
    public string title { get; set; } 
    public string description { get; set; } 
    public List<Item> items { get; set; } 
} 

あなたが見ることができるように、プロパティ名はJSONオブジェクトでキーと一致する::)

+1

public class Item { [JsonProperty("id")] public string Id { get; set; } [JsonProperty("uploaded")] public string Uploaded { get; set; } [JsonProperty("uploader")] public string Uploader { get; set; } //Etc... } 

そして、あなたのJSON文字列は、その後、私たちのRootObjectクラスに非直列化することができますか? –

+0

あなたのオブジェクトにJSONを逆シリアル化するには、NewtonSoft Json Nugetパッケージを使用します。その後、EFかADOのいずれかを使用してDBに変換します。 – Stuart

+0

私は今ニュートンソフトを手配しています。私はADOのために私の「上司」と一緒に見ていきます。 – MUGO

答えて

1

あなたはこのようなあなたのクラスを持っている必要があります。 Json.NETを使用して、JsonProperty属性を使用して、jsonキーとは異なるプロパティ名を使用する場合は、正しいキーを正しいプロパティにマップできます。

例えば:だから何があなたが疲れてい

public RootObject DeserializeJson(string jsonString) 
{ 
    var myObj = JsonConvert.DeserializeObject<RootObject>(jsonString); 
    return myObj; 
} 
+0

ありがとうございました。私があなたのコードで持っている問題は、 "var"はスクリプトでのみ使用でき、jsonStringはこのスコープには存在しないということです。私がJsonPropertyを使用している場合、それは以前のクラスを置き換えることを意味しますか? – MUGO

+0

'var'は暗黙の型であり、json文字列を逆シリアル化しようとしているメソッド内で使用する必要があります。また、明示的な型 'RootObject'を使うこともできます。 'jsonString'は私が作った文字列変数名です.Json文字列を含む変数を使用します。私は自分の答えを編集して、私が意味することのより明確な例を含めるようにしました。 – ThePerplexedOne

+0

完了しました。 "var"または "jsonString"でエラーが発生しなくなりました。間違った場所にあっただけです。私は私のC#で私のjsonファイルを読む/変換するためのリンクを作る必要がありますか? – MUGO

関連する問題