2017-11-28 2 views
0

Ich versuche, JSON-Daten in meine Methode einzubringen. Ich benutze Postman, um meine Daten zu senden.versucht, JSON als JObject zu empfangen

Ein Beispiel für meine JSON ist ... { "FieldData": { "name": "David"}, "Projekt": 20 "Version": 1}

Mein Modell ist

public class IncomingFormData 
{ 
    public JObject FieldData { get; set; } 
    public int Project { get; set; } 
    public int Version { get; set; } 
} 

Meine Methode ist

[HttpPost] 
    public void SaveFormData(IncomingFormData FieldData) 
    { 
     string myField = FieldData.FieldData.ToString(); 
    } 

ich erhalte null in FieldData.FieldData und das Projekt und Version zeigen 0.

In meiner früheren Version, die funktionierte, hatte ich ...

Ein Beispiel für meine JSON ist ...

{FieldData: '{ "name": "david"}', "Projekt": 20 "Version": 1}

[HttpPost] 
    public void SaveFormData(string FieldData, int Project, int Version) 
    { 
     string myField = FieldData; 
    } 

für mich leider in dieser Version, wenn der Wert eines der FieldData Objekte einen Apostroph in ihm, es funktioniert nicht. (Dies ist gemäß RFC korrekt).

Also musste ich es neu schreiben.

Jetzt kann ich nichts von Postman bekommen. Die Methode wird aufgerufen, aber nichts kommt rein.

Postbote hat Anwendung/Json und Content-Type-Anwendung akzeptieren/Json festgelegt.

Vielen Dank.

Antwort

0

Das ist nicht wirklich die So wollte ich das machen, aber hey, es funktioniert.

Meine ursprüngliche Methode war in einem normalen MVC-Controller. Als ich versuchte, die JSON zu schicken, wurde ich den Fehler immer Kann abstrakte Klasse

jedoch nicht schaffen, einen api-Controller zu schaffen stattdessen mit so ziemlich der gleichen Signatur JObject FieldData und von dort vorbei in meinen regelmäßigen Controller es funktioniert einfach.

Der folgende Code befindet sich im api-Controller.

public JsonResult Post([FromBody]JObject FieldData) 
    { 
     //string myData = FieldData.ToString(); 

     FormsController form = new FormsController(); 

     return form.SaveFormData(FieldData); 

    } 
-1

Versuchen Sie dies passieren: { "IncomingFormData": { "FieldData": { "name": "David"}, "Projekt": 20 "Version": 1}}

+0

Nein, das hat nicht funktioniert. Ich habe immer noch Null für FieldData und 0 für Project und Version. Die FieldData, Project und Version ist bereits ein Wrapping für den {"Name": "David"} Json. Dieser JSON ist dynamisch in der Natur, so dass ich nicht wissen kann, was drin sein wird. – David