2016-04-20 26 views
0

入れ子のJSONを読み込んでデータベースに格納したいと考えています。私はpostメソッドからJSONオブジェクトを "application/json"として私のWCFサービスに渡します。入れ子になったJSONオブジェクトの読み込み

このため、JSONを辞書に変換しています。しかし、最初のレベルの値だけを取得する。第2レベルのJSONのオブジェクトの取得。以下は

は、私が辞書にJSONをひそかに使用していたコードです:

以下
[Serializable] 
public class JsonDictionary : ISerializable 
{ 
    private Dictionary<string, object> m_entries; 

    public JsonDictionary() 
    { 
     m_entries = new Dictionary<string, object>(); 
    } 

    public IEnumerable<KeyValuePair<string, object>> Entries 
    { 
     get { return m_entries; } 
    } 

    protected JsonDictionary(SerializationInfo info, StreamingContext context) 
    { 
     m_entries = new Dictionary<string, object>(); 
     foreach (var entry in info) 
     { 
      m_entries.Add(entry.Name, entry.Value); 
     } 
    } 

    public void GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     foreach (var entry in m_entries) 
     { 
      info.AddValue(entry.Key, entry.Value); 
     } 
    } 
} 

は、WCFにJSONの投稿です:この中

、オブジェクトの代わりに、「office_address」の値を取得し、 "financial_details"、 "residence_address"、および "personal_details"です。

{ 
    "business_name": "Test Business", 
    "fk_loan_id": "kh-aaaaa3232", 
    "proprietor_details": { 
     "office_address": { 
      "email_id": "[email protected]", 
      "alternative_mobile_number": "00000", 
      "pincode": "00000", 
      "landline_number": "00000", 
      "city": "Tutne", 
      "flat_number": "000", 
      "street": "Test Street", 
      "locality": "tLocality", 
      "state": "SGDS", 
      "mobile_number": "0000000000" 
     }, 
     "date_of_incorporation": "01/03/2010", 
     "financial_details": { 
      "TAN": "ghdg45341f", 
      "TIN": "dc5345fg6g", 
      "VAT": "dgdgd544t4", 
      "PAN": "AAAAA7614A" 
     }, 
     "residence_address": { 
      "email_id": "[email protected]", 
      "alternative_mobile_number": "0000000", 
      "pincode": "00000", 
      "landline_number": "00000", 
      "city": "SFSS", 
      "flat_number": "055", 
      "street": "DASAW", 
      "locality": "Local", 
      "state": "AAAAA", 
      "mobile_number": "000000" 
     }, 
     "personal_details": { 
      "gender": "M", 
      "date_of_birth": "06/07/1969", 
      "last_name": "AAA", 
      "middle_name": "A", 
      "first_name": "AAAA" 
     } 
    } 
} 
+0

あなたを取り付けるシオマネキコール enter image description here

の場合はnull } 添付画像've defin'あなたの辞書を 'Dictionary 'として編集し、キーの 'object'を取得しています。これは 'Dictionary 'のことです。オブジェクト以外のものを返す場合は、値の型として 'object'を使用しないでください。 –

+0

私が使用しているものはすべて、office_addressは0のオブジェクトとして扱われます。 – Sagar

答えて

0

は、これを使用 - var innerProperties = yourObject.proprietor_details;

これはあなたにproprietor_details内部の性質を与えます。

私はここで、MVCのWeb APIを作成したコード

namespace TestWebApi.Controllers 
{ 
public class ValuesController : ApiController 
{ 
    // GET api/values 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 

    // GET api/values/5 
    public string Get(int id) 
    { 
     return "value"; 
    } 

    // POST api/values 
    public void Post(ComplexClass data) 
    { 
     var xx = data.business_name; 
     var y = xx + data.date_of_incorporation; 
    } 

    // PUT api/values/5 
    public void Put(int id, [FromBody]string value) 
    { 
    } 

    // DELETE api/values/5 
    public void Delete(int id) 
    { 
    } 
} 

}

public class ComplexClass 
{ 
    public string business_name { get; set; } 
    public string fk_loan_id { get; set; } 
    public proprietor_details proprietor_details {get;set;} 
    public string date_of_incorporation { get; set; } 
    public financial_details financial_details { get; set; } 
    public residence_address residence_address {get;set;} 
    public personal_details personal_details {get;set;} 
} 

public class financial_details 
{ 
    public string TAN { get; set; } 
    public string TIN { get; set; } 
    public string VAT { get; set; } 
    public string PAN { get; set; } 
    } 

が他のクラスを作成されても...ここ

はポストコールのJSONデータは私があります { "business_name": "Test Business"、 "fk_loan_id": "kh-aaaaa3232"、 "propriet or_details ":ヌル、 "date_of_incorporation": "2010年1月3日"、 "financial_details":{ "TAN": "ghdg45341f"、 "TIN": "dc5345fg6g"、 "VAT": "dgdgd544t4" 、 "PAN": "AAAAA7614A" }、 "residence_address":ヌル、 "personal_details":データツリーの画像 [][1]

+0

こんにちは、私は作成された辞書を読むために以下のメソッドを使用しています:public Main ApplyNewLoan(ApplyNewLoan applyloan) { var innerProperties = applyloan.proprietor_details; db.ApplyLoan(applyloan)を返します。 } これで私はproprietor_detailsまでjSonDictionaryとして読むことができます。私は "office_address"も読む必要があります。しかしそれはオブジェクトとしてそれを読んでいる。 – Sagar

+0

次に、yourObject.proprietor_details.office_addressを試してください。 – Rajdeep

+0

が機能していない、「office_address」が見つかりません – Sagar

関連する問題