2017-07-03 57 views
0

无法创建一个类来deserailize此JSON C#导致数是造成问题,而映射任何帮助表示赞赏 开始创建类本身就是JSON映射问题C#

{//this is the class name 
"1504076400": { 
    "VenueKey": "the-gazebo", 
    "IsShortBook": false, 
    "IsSaturday": false, 
    "Slots": [{ 
      "TS": 1504098000, 
      "String": "08-30-2017 6:00 AM", 
      "IsAvailable": false 
     }, 
     { 
      "TS": 1504099800, 
      "String": "08-30-2017 6:30 AM", 
      "IsAvailable": false 
     } 
    ] 
},//these numbers are causing problem 
"1504162800": { 
    "VenueKey": "the-gazebo", 
    "IsShortBook": false, 
    "IsSaturday": false, 
    "Slots": [{ 
      "TS": 1504184400, 
      "String": "08-31-2017 6:00 AM", 
      "IsAvailable": false 
     }, 
     { 
      "TS": 1504186200, 
      "String": "08-31-2017 6:30 AM", 
      "IsAvailable": false 
     } 
    ] 
} 
} 
+1

C#不允许数值类名 – Ramakrishna

+1

这显然是同一类型的对象,但“类名”是不同的每一个......你可以重写一个类名,但根据你的理论,你没有一个类在这里表示,但无限数量。你可以尝试反序列化为Dictionary 吗?这个数字看起来更像是一个关键词,而不是一个类名。无论如何,这看起来不像格式良好的JSON--如果你对发送代码没有任何控制权,你可能想与发件人联系,看看他们的意图是什么...... –

+0

试过它没有工作 – Ramakrishna

回答

0

我看不出问题的问题既不是反序列化也不是json。型号CLASSE可以看起来像:

class Venue 
{ 
    public string VenueKey { get; set; } 

    public bool IsShortBook { get; set; } 

    public bool IsSaturday { get; set; } 

    public Slot[] Slots { get; set; } 
} 

class Slot 
{ 
    public string TS { get; set; } 

    public string @String { get; set; } 

    public bool ISAvailable { get; set; } 
} 

而且desirialization正常工作: JsonConvert.DeserializeObject<Dictionary<string, Venue>>(json);

+0

{“错误转换值\”the-gazebo \“键入'TimeSlotChapelProblem.Venue'。Path'1504076400.VenueKey',line 3,position 29.”} – Ramakrishna

+0

Are you sure?我检查了JSON.Net版本10和版本6.所有工作正常。你究竟做了什么? [工作示例](https://dotnetfiddle.net/eFX7aX) –

+0

是的确定这只是样本json,我发布的实际一个很长 – Ramakrishna