2017-03-09 11 views
0

にnull値を返します。デシリアライズネストされたJSONは、次のように私はJSONオブジェクトを持っているのC#

次のように私のJSONは次のとおりです。

{ 
    "MTONGUE": "Hindi", 
    "REGISTERED": "Y/N", 
    "MULTI_PROFILE": "Y/N", 
    "PAID": "Y/N", 
    "INFO_DTOFBIRTH ": "2010-01-01", 
    "INFO_GENDER": "Male/Femal", 
    "INFO_MSTATUS": "Married", 
    "INFO_RELIGION": "Hindu", 
    "RENEWAL": "Y/N", 
    "RENEWAL_DAYS": "10", 
    "DISCOUNT_TEXT": "Flat/Upto", 
    "DISCOUNT_PERCENT": "10", 
    "MEMBERSHIP": { 
     "P": { 
      "P3": { 
       "NAME": "eRishta", 
       "CALL": "75", 
       "DURATION": "3", 
       "OFFER_PRICE": "2000" 
      }, 
      "P6": { 
       "NAME": "eRishta", 
       "CALL": "75", 
       "DURATION": "6", 
       "OFFER_PRICE": "4000" 
      }, 
      "P12": { 
       "NAME": "eRishta", 
       "CALL": "75", 
       "DURATION": "12", 
       "OFFER_PRICE": "6000" 
      } 
     }, 
     "C": { 
      "C3": { 
       "NAME": "eValue", 
       "CALL": "75", 
       "DURATION": "3", 
       "OFFER_PRICE": "2000" 
      }, 
      "C6": { 
       "NAME": "eValue", 
       "CALL": "75", 
       "DURATION": "6", 
       "OFFER_PRICE": "4000" 
      }, 
      "C12": { 
       "NAME": "eValue", 
       "CALL": "75", 
       "DURATION": "12", 
       "OFFER_PRICE": "6000" 
      } 
     }, 
     "NCP": { 
      "NCP3": { 
       "NAME": "eAdvantage", 
       "CALL": "75", 
       "DURATION": "3", 
       "OFFER_PRICE": "2000" 
      }, 
      "NCP6": { 
       "NAME": "eAdvantage", 
       "CALL": "75", 
       "DURATION": "6", 
       "OFFER_PRICE": "4000" 
      }, 
      "NCP12": { 
       "NAME": "eAdvantage", 
       "CALL": "75", 
       "DURATION": "12", 
       "OFFER_PRICE": "6000" 
      } 
     } 
    } 
} 

私はこのJSONのために、関連するクラスの構造を知っておく必要があります。

私は

public class results 
     { 
      public string MTONGUE { get; set; } 
      public string REGISTERED { get; set; } 
      public string MULTI_PROFILE { get; set; } 
      public string PAID { get; set; } 
      public string INFO_DTOFBIRTH { get; set; } 
      public string INFO_GENDER { get; set; } 
      public string INFO_MSTATUS { get; set; } 
      public string INFO_RELIGION { get; set; } 
      public string RENEWAL { get; set; } 
      public string RENEWAL_DAYS { get; set; } 
      public string DISCOUNT_TEXT { get; set; } 
      public string DISCOUNT_PERCENT { get; set; } 
      public List<P> P { get; set; } 
     } 
     public class P 
     { 
      public Dictionary<string, List<PC>> PC { get; set; } 
     } 
     public class PC 
     { 
      public string NAME { get; set; } 
      public string Call { get; set; } 
      public string DURATION { get; set; } 
      public string OFFER_PRICE { get; set; } 
     } 

と同様のC#クラスを持っている私はとデシリアライズしようとします:

 JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     results obj = serializer.Deserialize<results>(json); 

しかし、1つのレベル下にネストすべてがnull値を返します。ネストしたJsonがnull値を返すのはなぜですか?

+2

あなたのJSONは有効ではありません。 JSONを確認してください。 –

+0

Mohitが言っているように、あなたのJSONは無効であり、あなたが言及したクラス構造と一致しません。 JSON @ http://jsonlint.com/を検証できます –

答えて

0

Pクラスは不要です。すべてのあなたのJSONの

変更

public List<P> P { get; set; } 

あなたは、このようにアクセスすることができます

public Dictionary<string,Dictionary<string,PC>> MEMBERSHIP { get; set; } 

に...

results obj = serializer.Deserialize<results>(str); 
var p = obj.MEMBERSHIP["P"]["P12"].DURATION; 
var c = obj.MEMBERSHIP["C"]["C12"].DURATION; 
var npc = obj.MEMBERSHIP["NCP"]["NCP12"].DURATION; 
0

まず、有効なJSONに見つけるinvalid.Pleaseある

{ 
    "MTONGUE": "Hindi", 
    "REGISTERED": "Y\/N", 
    "MULTI_PROFILE": "Y\/N", 
    "PAID": "Y\/N", 
    "INFO_DTOFBIRTH ": "2010-01-01", 
    "INFO_GENDER": "Male\/Femal", 
    "INFO_MSTATUS": "Married", 
    "INFO_RELIGION": "Hindu", 
    "RENEWAL": "Y\/N", 
    "RENEWAL_DAYS": "10", 
    "DISCOUNT_TEXT": "Flat\/Upto", 
    "DISCOUNT_PERCENT": "10", 
    "MEMBERSHIP": { 
     "P": { 
      "P3": { 
       "NAME": "eRishta", 
       "CALL": "75", 
       "DURATION": "3", 
       "OFFER_PRICE": "2000" 
      }, 
      "P6": { 
       "NAME": "eRishta", 
       "CALL": "75", 
       "DURATION": "6", 
       "OFFER_PRICE": "4000" 
      }, 
      "P12": { 
       "NAME": "eRishta", 
       "CALL": "75", 
       "DURATION": "12", 
       "OFFER_PRICE": "6000" 
      } 
     }, 
     "C3": { 
      "NAME": "eValue", 
      "CALL": "75", 
      "DURATION": "3", 
      "OFFER_PRICE": "2000" 
     }, 
     "C6": { 
      "NAME": "eValue", 
      "CALL": "75", 
      "DURATION": "6", 
      "OFFER_PRICE": "4000" 
     }, 
     "C12": { 
      "NAME": "eValue", 
      "CALL": "75", 
      "DURATION": "12", 
      "OFFER_PRICE": "6000" 
     } 
    }, 
    "NCP3": { 
     "NAME": "eAdvantage", 
     "CALL": "75", 
     "DURATION": "3", 
     "OFFER_PRICE": "2000" 
    }, 
    "NCP6": { 
     "NAME": "eAdvantage", 
     "CALL": "75", 
     "DURATION": "6", 
     "OFFER_PRICE": "4000" 
    }, 
    "NCP12": { 
     "NAME": "eAdvantage", 
     "CALL": "75", 
     "DURATION": "12", 
     "OFFER_PRICE": "6000" 
    } 


} 

JSON

のためのC#クラス
public class P3 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class P6 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class P12 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class P 
{ 
    public P3 P3 { get; set; } 
    public P6 P6 { get; set; } 
    public P12 P12 { get; set; } 
} 

public class C3 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class C6 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class C12 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class MEMBERSHIP 
{ 
    public P P { get; set; } 
    public C3 C3 { get; set; } 
    public C6 C6 { get; set; } 
    public C12 C12 { get; set; } 
} 

public class NCP3 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class NCP6 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class NCP12 
{ 
    public string NAME { get; set; } 
    public string CALL { get; set; } 
    public string DURATION { get; set; } 
    public string OFFER_PRICE { get; set; } 
} 

public class RootObject 
{ 
    public string MTONGUE { get; set; } 
    public string REGISTERED { get; set; } 
    public string MULTI_PROFILE { get; set; } 
    public string PAID { get; set; } 
    public string __invalid_name__INFO_DTOFBIRTH { get; set; } 
    public string INFO_GENDER { get; set; } 
    public string INFO_MSTATUS { get; set; } 
    public string INFO_RELIGION { get; set; } 
    public string RENEWAL { get; set; } 
    public string RENEWAL_DAYS { get; set; } 
    public string DISCOUNT_TEXT { get; set; } 
    public string DISCOUNT_PERCENT { get; set; } 
    public MEMBERSHIP MEMBERSHIP { get; set; } 
    public NCP3 NCP3 { get; set; } 
    public NCP6 NCP6 { get; set; } 
    public NCP12 NCP12 { get; set; } 
} 
関連する問題