2016-06-09 8 views
0

Я использовал json2csharp для создания некоторых классов из моего JSON. Все работает, когда я deserialize с DataContractJsonSerializer или JsonConvert, но я не могу понять, почему генератор делает класс Message2. Это не соответствует моей логике, и я хочу четко понять это. Я думаю, что Message2 должен использоваться внутри OfflineMessage как List<Message2> messages, а класс Message1 необходимо удалить. Что мне не хватает?Почему json2sharp создал дополнительный класс из моего JSON?

Эти классы, порожденные json2csharp (обратите внимание, что я переименовал Message в Message1 для более ясного вопроса):

public class Message2 
{ 
    public int status { get; set; } 
    public string sender { get; set; } 
    public string receiver { get; set; } 
    public string msg { get; set; } 
    public int timeStamp { get; set; } 
    public string hash { get; set; } 
    public string msgContext { get; set; } 
} 

public class Message1 
{ 
    public Message2 message { get; set; } 
} 

public class OfflineMessage 
{ 
    public int sequence { get; set; } 
    public List<Message1> messages { get; set; } 
} 

public class Respons 
{ 
    public OfflineMessage offlineMessage { get; set; } 
} 

public class RootObject 
{ 
    public int [email protected] { get; set; } 
    public int [email protected] { get; set; } 
    public List<Respons> responses { get; set; } 
} 

Это как JSON выглядит:

{ 
    "@pendingMsg": 0, 
    "@syncStatus": 0, 
    "responses": [ 
    { 
     "offlineMessage": { 
     "sequence": 2, 
     "messages": [ 
      { 
      "message": { 
       "status": 6, 
       "sender": "storng", 
       "receiver": "JoilSp", 
       "msg": "Hello my friend", 
       "timeStamp": 1465398075, 
       "hash": "+eq4cxwICbyNC31X5naQz3Z+R/Lxdw==", 
       "msgContext": "+eq4cxwICbyNC31X5naQz3Z+R/Lxdw==" 
      } 
      }, 
      { 
      "message": { 
       "status": 6, 
       "sender": "JioS", 
       "receiver": "JoilSp", 
       "msg": "nice)))", 
       "timeStamp": 1465398075, 
       "hash": "+eq4cxwICbyNC31X5naQz3Z+R/Lxdw==", 
       "msgContext": "+eq4cxwICbyNC31X5naQz3Z+R/Lxdw==" 
      } 
      } 
     ] 
     } 
    } 
    ] 
} 

ответ

1

Это создает Message2 класс, потому что ваше свойство messages представляет собой массив объектов, а те объекты содержат другие объекты в своем message. Для представления членов массива messages нужен один класс, а другой - для представления значений свойств message.

Если вы отвечаете за ваш формат JSON, может быть чище структурировать JSON как это:

{ 
    "@pendingMsg":0, 
    "@syncStatus":0, 
    "responses":[ 
     { 
     "offlineMessage":{ 
      "sequence":2, 
      "messages":[ 
       { 
        "status":6, 
        "sender":"storng", 
        "receiver":"JoilSp", 
        "msg":"Hello my friend", 
        "timeStamp":1465398075, 
        "hash":"+eq4cxwICbyNC31X5naQz3Z+R\/Lxdw==", 
        "msgContext":"+eq4cxwICbyNC31X5naQz3Z+R\/Lxdw==" 
       }, 
       { 
        "status":6, 
        "sender":"JioS", 
        "receiver":"JoilSp", 
        "msg":"nice)))", 
        "timeStamp":1465398075, 
        "hash":"+eq4cxwICbyNC31X5naQz3Z+R\/Lxdw==", 
        "msgContext":"+eq4cxwICbyNC31X5naQz3Z+R\/Lxdw==" 
       } 
      ] 
     } 
     } 
    ] 
} 

Это должно произвести своего рода классовой структуры, которые вы ожидаете.