2017-05-12 12 views
2

は、IList<IShows>のシリアル化を手伝ってくれる人がいます。私はJsonConvert.SerializeObjectの助けを借りて、それをシリアル化するために管理しますが...のは、私のようなクラスがあるとしましょう:私のようなものC#Jsonインターフェイスのシリアル化

public class Show : IShow 
{ 
    public string Name { get; set; } 
    public IList<IEpisode> Episodes { get; set; } 
    public int Count { get; set; }  
} 
public class Episode : IEpisode 
{ 
    public string Name { get; set; } 
    public DateTime Date { get; set; } 
    public IList<ILink> Links { get; set; } 
} 
public class Link : ILink 
{ 
    public string URL { get; set; } 
    public string Name { get; set; } 
    public string Quality { get; set; } 
} 

を取得しています:

[ 
    { 
    "Name": "Supernatural", 
    "Episodes": [ 
     { 
     "Name": "There's Something About Mary", 
     "Date": "2017-05-12T02:20:05+01:00", 
     "Links": [ 
      { 
      "URL": "url", 
      "Name": "HDTV", 
      "Quality": "480p" 
      }, 
      { 
      "URL": "url", 
      "Name": "HDTV", 
      "Quality": "720p" 
      } 
     ] 
     } 
    ] 
    } 
] 

を私が前に追加のタグを追加したいと思いますすべてのショーの前にそれぞれショー(ショー)と別のタグ(ショー)があります。

誰かがそれを行う方法を知っていますか?

答えて

2

これはおそらくJSONが意図された方法ではないでしょう。

しかし、あなたは本当に、あなたがこのような何か行うことができますする必要がある場合:これは、所望の構造を生成する必要があります

public class Root { 
    public IList<ShowWrapper> Shows { get; set;} 
} 
public class ShowWrapper { //silly name though ;) 
    public IShow Show { get; set;} 
} 

を、代わりに

IList<IShow>. 

のルートのインスタンスをシリアライズが、非常に不自然な感じ。

btwを使用しているシリアライザは何ですか?たぶん誰かがこれを達成するためにあまり「手動」な方法を知っているかもしれません。

+0

私はJSONを初めて使うので、これは最良の方法ではないかもしれません。私はあなたのアドバイスを取るつもりです、そして私はそのJSONを保つつもりです。私は 'JsonConvert.SerializeObject'を使用しています。あなたの答えをありがとう。 –

+1

@OndřejDleskアドバイスの言葉として、指定したJSON形式に明示的にマッチさせようとしていないか、またはサードパーティの形式を扱っているのでなければ、JSONの外観に気を付けるべきではありません。クラス構造を論理的に設計する限り(ここにある)、それだけで心配する必要はありません。 – Rob

+0

良いアドバイス@Rob! @OndřejDlesk:質問を編集してJsonConvertについてのヒントを残しておくと、今後の読者の役に立ちます。 –

関連する問題