2016-11-27 9 views
2

私はこのスキーマといくつかのJSONがあります。JSONを別の構造のオブジェクトにマッピングするにはどうすればよいですか?

{ 
    "person":{ 
     "name":"test", 
     "family":"testi" 
    }, 
    "Employee":{ 
     "id":54, 
     "department":"web development", 
     "skils":[{"type":"C#", "grade":"good"},{{"type":"SQL", "grade":"Expert"}}] 
    } 
} 

をし、私は次のクラスに、このJSONをマップする必要があります。

class Employee { 
    public int id { get; set; } 
    public string Name { get; set; } 
    public string Family { get; set; } 
    public string Department { get; set; } 
    public Skill[] Skills { get; set;} 
} 

class skill { 
    public string Type { get; set; } 
    public string Grade { get; set; } 
} 

今私のC#のオブジェクトに私のJSONスキーマをマッピングする方法はありますか? 私はNewtonsoft.Jsonライブラリを使用していますが、このようなJsonProperty属性を使用しようとしています:私のEmployeeクラスに

[JsonProperty("Person.Name")] 

を。しかし、これは機能しません。この問題を解決する方法はありますか?

答えて

1

あなたのクラスはあなたのjsonにとって適切ではありません。 jsonオブジェクトのクラスとプロパティのプロパティを均等化する必要があります。 jsonにはpersonという名前のプロパティがありますが、クラスには存在しません。

MappedObject mappedObject = JsonConvert.DeserializeObject<MappedObject>(yourJson); 

class MappedObject{ 
    public Person person; 
    public Employee employee; 
} 

class Person{ 
    public string name; 
    public string family; 
} 
class Employee { 
    public intid{get; set;} 
    public string deartment {get; set;} 
    public Skill[] skills {get; set;} 
} 
class skill{ 
    public string type{get; set;} 
    public string grade{get; set;} 
} 

また、動的オブジェクトを使用することもできます。

dynamic result = new ExpandoObject(); 
result = JsonConvert.DeserializeObject(yourJson); 
+0

私はこれを行う...それは私のプロジェクトは、他のサービスのラッパーであると私は自動マッパーを使用することができますが、この原因は作成....私自身のスキーマにオブジェクトを送信する必要があります...非常によく働くアリMappedObjectを自分のスキーマに変換するための追加ステップ。私はこのステップを減らしたいです –

+0

私の最初のコードを使用する必要があります。 –

+0

しかし、それは従業員の名前と家族のプロパティを埋めることはありません.... –

関連する問題