2016-12-20 1 views
2

Ich habe unter Json: -Bindung (Mapping) Json in C# -Klasse

{ 
    "EventMessageUId": "ef51b5a3-32b2-e611-baf9-fc3fdb446bd2", 

    "Message": [{ 
     "StoryID": 1, 
     "StoryDesc": "xyzzzz" 
    }], 
    "ProjectUId": "00100000-0000-0000-0000-000000000000", 
    "ProjectId": 1, 
    "CreatedByUser": "system", 
    "CreatedByApp": "myWizard-Fortress", 
    "CreatedOn": "2016-11-24T10:44:39.473" 
} 

ich als Bindungsklassen gemacht haben: -

public class Requirements 
    { 
     public string EventMessageUId { get; set; } 
     public int ProjectId { get; set; } 
     public string CreatedByUser { get; set; } 
     public string CreatedByApp { get; set; }   
     public string CreatedOn { get; set; } 
     Message obj = new Message(); 
    } 

    public class Message 
    { 
     public string StoryID { get; set; } 
     public string StoryDesc { get; set; } 
    } 

Ich Abbildung es wie folgt: -

Requirements objRequirement = JsonObject.ToObject<Requirements>(); 

Aber wenn ich sehe, durch Höver: -

enter image description here

Wie im Bild sehen: -

Message obj = new Message(); 

Obj immer Null

Wie kann ich wo es sich in der richtigen Art und Weise?

Edit 1:

änderte ich meine Klasse: -

public class Requirements 
    {  
     public string EventMessageUId { get; set; } 
     public int ProjectId { get; set; } 
     public string CreatedByUser { get; set; } 
     public string CreatedByApp { get; set; }   
     public string CreatedOn { get; set; } 
     public Message Requirement { get; set; }   
    } 

Das gleiche Problem: - enter image description here

Antwort

1

Ändern Sie bitte Ihre erste Klasse wie folgt:

public Message[] Message { get; set; } 
+0

Sie sind richtig, mit Blick auf die JSON-Nachricht ist ein Array: "Nachricht": [{ "StoryID": 1, "StoryDesc": "xyzzzz" }], Wenn Sie sich die [{ }] – unicorn2

+0

Das hat funktioniert .. !!! –

2

einfach Ihre Klasse ändern, so dass es eine message Eigenschaft ist. In Ihrer Klasse heißt es obj. Die message Eigenschaft sollte auch public sein, damit es eingestellt werden kann.

public class Requirements 
{ 
    public string EventMessageUId { get; set; } 
    public int ProjectId { get; set; } 
    public string CreatedByUser { get; set; } 
    public string CreatedByApp { get; set; }   
    public string CreatedOn { get; set; } 
    public Message message { get; set; } 
} 

public class Message 
{ 
    public string StoryID { get; set; } 
    public string StoryDesc { get; set; } 
} 
+0

please see me bearbeiten 1 –

+0

Gerade diese Zeile ändern: public Nachricht Anforderung {get; einstellen; } zur öffentlichen Nachricht Nachricht {get; einstellen; } – unicorn2

+0

Der Name in Ihrem JSON und C# sollte identisch sein: "Nachricht" – unicorn2

1

Ich sehe drei mögliche Probleme:

  • In Ihrem Json reffer Sie das Message Objekt mit dem Namen Message, in der Klassendefinition, ist sein Name obj
  • In Ihrem Json, die Message Objekt wird als Array gesetzt
  • Ihr Nachrichtenobjekt ist nicht einstellbar

{ 
    "EventMessageUId": "ef51b5a3-32b2-e611-baf9-fc3fdb446bd2", 

    "Message": { 
     "StoryID": 1, 
     "StoryDesc": "xyzzzz" 
    }, 
    "ProjectUId": "00100000-0000-0000-0000-000000000000", 
    "ProjectId": 1, 
    "CreatedByUser": "system", 
    "CreatedByApp": "myWizard-Fortress", 
    "CreatedOn": "2016-11-24T10:44:39.473" 
} 

public class Requirements 
{ 
    public string EventMessageUId { get; set; } 
    public int ProjectId { get; set; } 
    public string CreatedByUser { get; set; } 
    public string CreatedByApp { get; set; }   
    public string CreatedOn { get; set; } 

    private Message _Message = new Message(); 
    public Message Message { get { return this._Message ; } set { this._Message = value; } } 

} 
public class Message 
{ 
    public string StoryID { get; set; } 
    public string StoryDesc { get; set; } 
} 
1

Sie benötigen eine Eigenschaft Message benannt, die eine Collection (verwenden List) in Ihrer Requirements Klasse. Entfernen Sie die Message obj = new Message();

Fügen Sie dies zu Ihrer Klasse

public List<Message> Message {get; set;} 

So Ihre Klassendefinition aussehen muss.

public class Requirements 
{ 
    public string EventMessageUId { get; set; } 
    public int ProjectId { get; set; } 
    public string CreatedByUser { get; set; } 
    public string CreatedByApp { get; set; }   
    public string CreatedOn { get; set; } 
    public List<Message> Message {get; set;} //add this 
}