#c# #json #json-deserialization
Вопрос:
Я использую API, который выдает мне этот json в качестве ответа, это тело ответа json :
{
"meta":{
"status":200,
"message":"success"
},
"data":{
"0":{
"MsgID":"2661689817",
"Status":"6",
"SendTime":"2021-10-3114:30:04",
"DeliverTime":"2021-10-31 14:30:07"
}
}
}
Моя проблема "0":{...
в этом теле.
Как я могу десериализовать это в класс.
он не может десериализоваться в "string _0"
prop.
Комментарии:
1. Всегда ли это «0»?
2. Это, скорее всего, словарь, десериализуйте его как таковой
3. @LIama: да, это всегда «0»
4. Какой сериализатор вы используете?
5. Вы пробовали
JsonProperty
атрибут. newtonsoft.com/json/help/html/jsonpropertyname.htm
Ответ №1:
Как говорит @TheGeneral, это похоже на словарь. Вы можете проанализировать — вот так:
public void ParseObject()
{
var response = @"{
'meta':{
'status':200,
'message':'success'
},
'data':{
'0':{
'MsgID':'2661689817',
'Status':'6',
'SendTime':'2021-10-3114:30:04',
'DeliverTime':'2021-10-31 14:30:07'
}
}
}";
var responseObj = JsonConvert.DeserializeObject<MetaData>(response);
}
public class MetaData
{
public Meta Meta { get; set; }
public Dictionary<int, Data> Data { get; set; }
}
public class Meta
{
public string Status { get; set; }
public string Message { get; set; }
}
public class Data
{
public string MsgId { get; set; }
public string Status { get; set; }
public string SendTime { get; set; }
}
Ответ №2:
попробуйте использовать JsonProperty
public class Data
{
[JsonProperty("0") ]
public _0 _0 { get; set; }
}
public class _0
{
public string MsgID { get; set; }
public string Status { get; set; }
public string SendTime { get; set; }
public string DeliverTime { get; set; }
}