2016-09-05 4 views
-1

In einer MVC-Anwendung ich eine JSON-Zeichenfolge von einem bestimmten Server abrufen. Faust alles, was ich zu Testzwecken die json mit Chrome abrufen und ich bekomme dieseProblem mit JSON in asp.net MVC

{ 
ultima_prelucrare: "2013-11-25", 
ultima_declaratie: "2013-11-25", 
tva_la_incasare: [ ], 
tva: null, 
telefon: "0745040840", 
stare: "INREGISTRAT din data 04 Iulie 2007", 
radiata: false, 
numar_reg_com: "J40/12836/2007", 
meta: { 
updated_at: "2016-08-30T19:05:29.922418", 
last_changed_at: null 
}, 
judet: "Municipiul București", 
impozit_profit: null, 
impozit_micro: "2011-01-01", 
fax: null, 
denumire: "Infosystems4u S.R.L.", 
cod_postal: "61954", 
cif: "22052442", 
adresa: "Aleea Baiut, 9a, Bucuresti", 
act_autorizare: null, 
accize: null 
} 

und ist OK. Jetzt zurück zu meiner App. Ich habe bereits ein Modell, das diese Struktur beschreibt. Ich habe eine Ansicht zum Hinzufügen eines Kunden in meiner Anwendung mit diesen Feldern. In meinem Szenario möchte ich, dass nach der Bereitstellung eines Werts für "CIF" -Feld, und dann eine Web-Anfrage für den angegebenen Server und rufen Sie die oben genannten JSON. Der JSON wird abgerufen, aber wenn ich versuche, mit newtonsoft zu deserialisieren, wird eine Ausnahme bezüglich "[" - Zeichen ausgelöst. Hier habe ich festgestellt, dass [ist nicht zwischen Zitat-Zeichen eingeschlossen, sondern ist so, wie es vom Server kommt. sehr kurz auf meinem Code ist wie (jetzt ist der Code einfach in der Standardaktion im Controller, aber ich kann diese späte Adresse):

 //call openapi.ro 
     string CompanyCUI = "22052442"; 
     // Create a new 'Uri' object with the specified Company ID string. 
     Uri myUri = new Uri("https://api.openapi.ro/api/companies/"+CompanyCUI+".json"); 
     // Create a new request to the above mentioned URL. 
     WebRequest myWebRequest = WebRequest.Create(myUri); 
     //Add the required header to request 
     myWebRequest.Headers.Add("x-api-key", "8P4RP_kwn71Nt8VG7boFmQb_7NsihyQxT_x7JGcGQkvPdXZH2Q"); 
     // Assign the response object of 'WebRequest' to a 'WebResponse' variable. 
     WebResponse myWebResponse = myWebRequest.GetResponse(); 
     // Read the response into a stream 
     var dataStream = myWebResponse.GetResponseStream(); 
     var reader = new StreamReader(dataStream); 
     var jsonResultString = reader.ReadToEnd(); 
     // Deserialize 
     var CompanyInfoData = Newtonsoft.Json.JsonConvert.DeserializeObject<CustomerModels>(jsonResultString); 
     //Feed the model with retrieved data 
     //... 
     //Save all 
     //... 

nun angenommen, dass ich das finden, was mit json Inhalt falsch sein kann, und Wie geht es weiter? Der nächste Schritt besteht darin, die Editbox-Steuerelemente in meinem Formular mit den abgerufenen Werten zu füllen, bevor der Benutzer auf die Schaltfläche Speichern des Formulars klickt. Was mich stört ist, dass ich zwei Knöpfe in meinem Formular brauche, einen für das Aufrufen der Web-Anfrage und füllen Sie mit den gewünschten Werten, und zweitens die Schaltfläche Speichern, und ich weiß wirklich nicht, wie man mit zwei Tasten in einem einzigen Formular umgehen.

Vielen Dank im Voraus für jeden Hinweis

+0

Ihre json nicht mit jsonlint.com nicht validieren. Sie sollten Ihre Felder auch in Anführungszeichen haben wie diese \t "ultima_prelucrare": "2013-11-25", \t "ultima_declaratie": "2013-11-25", .... – smoore4

+0

Zeigen Sie das Modell für ' CustomerModels' –

+0

Jetzt ist wie: öffentliche Klasse CustomerModels { // öffentliche Zeichenfolge ultima_prelucrare {bekommen; einstellen; } öffentliche Zeichenfolge ultima_declaratie {get; einstellen; } öffentliche Liste tva_la_incasare {get; einstellen; } öffentliche Zeichenfolge tva {get; einstellen; } öffentliche Schnur Telefon {bekommen; einstellen; } öffentliche Zeichenfolge accize {get; einstellen; } } – net4u

Antwort

0

Die JSON vorgesehen ist syntaktisch gültig. Wenn CustomerModels Objekt deklariert, stellen Sie sicher, dass tva_la_incasare Attribut als Array oder eine Liste wie unten erklärt wird:

public List<object> tva_la_incasare { get; set; } 
+0

danke, jetzt ist in Ordnung. In Bezug auf "menschliches Lesen" habe ich jetzt eine Vorstellung, welche Art von Information da sein kann, da ich kein Mehrwertsteuerzahler bin. Ich werde nur mit der ID einer Firma nachschauen, von der ich weiß, dass sie Mehrwertsteuerzahler ist, um neugierig zu sehen, was ich dort habe. – net4u