[英]deserialize nested json returns null value in c#
我有json對象如下:
我的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的相關類結構。
我有類似的C#類
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; }
}
我試圖反序列化為:
JavaScriptSerializer serializer = new JavaScriptSerializer();
results obj = serializer.Deserialize<results>(json);
但嵌套1級的所有內容都返回null值。 為什么嵌套的Json返回null值?
你不需要P級。
更改
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;
首先,您的JSON無效。請找到有效的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"
}
},
"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; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.