2016-06-09 1 views
0

J'ai utilisé json2csharp pour générer des classes à partir de mon JSON. Tout fonctionne quand je désérialise avec DataContractJsonSerializer ou JsonConvert, mais je ne peux pas comprendre pourquoi le générateur fait la classe Message2. Cela ne correspond pas à ma logique, et je veux bien le comprendre. Je pense que Message2 devrait être utilisé à l'intérieur de OfflineMessage comme List<Message2> messages, et la classe Message1 doit être supprimée. Qu'est-ce que je rate?Pourquoi json2sharp a-t-il généré une classe supplémentaire à partir de mon JSON?

Ce sont les classes générées par json2csharp (notez que je renomme Message-Message1 pour une question plus claire):

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; } 
} 

Voici comment le JSON ressemble:

{ 
    "@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==" 
      } 
      } 
     ] 
     } 
    } 
    ] 
} 

Répondre

1

Il est la création d'un Message2 classe car votre propriété messages est un tableau d'objets, et ces objets contiennent d'autres objets dans leur propriété message. Il a besoin d'une classe pour représenter les membres du groupe messages et une autre pour représenter les valeurs des propriétés message.

Si vous êtes en charge de votre format JSON, il peut être plus propre à structurer votre JSON comme ceci:

{ 
    "@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==" 
       } 
      ] 
     } 
     } 
    ] 
} 

Cela devrait produire le type de structure de classe que vous attendez.