2017-12-23 18 views
1

Ich möchte JSON formatierte verbuchte Daten zu meinem Controller erhalten. Tatsächlich ist es für Paypal-Zahlung Webhook Call-Problem verwendet. Ich habe bereits ein JSON-Datenbeispiel angehängt. Bitte rate mir "FormCollection" ist eine gute Idee, auf diese JSON zuzugreifen oder was ist die beste Praxis für diese Situation?So empfangen eingehende JSON-Daten von außerhalb

Json:

{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
    } 
}} 

Controller:

[HttpPost] 
public JsonResult ReceiveData(FormCollection data) 
{ 
    using (var ctx = new db_mydb()) 
    { 
    } 

    return Json("ok"); 
} 
+1

Bitte, ** niemals ** 'FormCollection' verwenden. Verwenden Sie stattdessen eine ViewModel-Klasse, die Sie mit http://json2csharp.com/ generieren können. –

+0

Viewmodel wird gut funktionieren, um Json gepostete Daten zu erhalten? –

Antwort

2

Da diese Daten strukturiert werden empfangen und comming in als JSON dringend Modell eingegeben erstellen sollte (n) die Daten zu speichern.

public class Menuitem { 
    public string value { get; set; } 
    public string onclick { get; set; } 
} 

public class Popup { 
    public IList<Menuitem> menuitem { get; set; } 
} 

public class Menu { 
    public string id { get; set; } 
    public string value { get; set; } 
    public Popup popup { get; set; } 
} 

public class PaypalWebhookModel { 
    public Menu menu { get; set; } 
} 

Aktion sollte aktualisiert werden, um das gewünschte Modell wiederzugeben.

[HttpPost] 
public JsonResult ReceiveData([FromBody]PaypalWebhookModel data) { 
    using (var ctx = new db_mydb()) { 
     //... 
    } 
    return Json("ok"); 
} 
Verwandte Themen