2016-04-05 6 views
0

Ich habe eine C# API, die derzeit von einer Reihe unserer Websites verwendet wird. Meine API sendet eine JSON-Anfrage, ich mache ein paar Dinge basierend auf den Details in dieser Anfrage und sende dann eine JSON-Antwort mit dem Ergebnis der API-Arbeit und einigen anderen Informationen.Datei von URL lesen und für JSON Antwort konvertieren

Ich muss jetzt einige zusätzliche Informationen in meine JSON-Antwort aufnehmen.

Ich muss eine Datei aus einer bestimmten URL (diese Datei kann ein Bild sein, ein MS-Word-Dokument, ein PDF usw. - könnte wirklich alles sein).

Ich kenne den MIME-Typ dieser Datei bereits an der URL (um festzustellen, ob sie für mich gültig ist oder nicht).

Wenn es sich um einen unterstützten Datei-/MIME-Typ handelt, möchte ich diese Datei von der angegebenen URL abrufen und sie schließlich in JSON konvertieren/serialisieren und sie in meine JSON-Antwort aufnehmen.

In einigen Fällen kann ich tatsächlich mehrere Dateien/URLs haben, die ich abrufen, konvertieren und in meine JSON-Antwort einbinden muss (idealerweise als Array innerhalb einer Eigenschaft namens "Attachments").

Ich habe Newtonsoft.Json für das Serialisieren und Deserialisieren von Klassen mit regulären Eigenschaften verwendet, aber nichts mit dem Einlesen von Dateien und dem Senden als JSON getan und kann keine klaren Beispiele dafür finden.

+0

Wie würden Sie eine PDF in JSON konvertieren? Wollen Sie den Inhalt einer Datei in ein JSON-Objekt aufnehmen? Dann base64-kodiere es. – CodeCaster

+0

@MarcusStarnes Datei ist Cross-Domain oder in der gleichen Domäne –

+0

@HeemanshuBhalla Datei wird immer auf andere Domain (in unserem Amazon Cloud-Speicher) gefunden werden. – marcusstarnes

Antwort

0

Betrachten Sie Dateidaten als Byte-Array. Dann kann es in JSON mit Ihrem Datenübertragungsobjekt serialisiert werden.

public class YourTDO { 

    ...some other properties... 

    public byte[] FileData { get; set; } 
} 

Lesen Sie die Datei als Byte-Array von Ihrer externen Quelle, weisen Sie FileData-Eigenschaften zu und serialisieren Sie Ihr Objekt wie gewohnt.

0

Sie können Ihre API verwenden, um die Dateien direkt bereitzustellen und nur einen Bezeichner im JSON bereitzustellen. Je nachdem, was Sie mit dem statischen Inhalt versuchen (vorausgesetzt, Ihre PDF-Datei usw. ist statisch), können Sie die Dateien auch auf AWS hosten und den Identifikator als eindeutigen Link zu den Dateien verwenden.

In den meisten Fällen handelt es sich bei JSON-Objekten um Objekte, die Sie weitergeben, und in einigen Fällen können Sie auf dieselben Dateien verweisen. Durch die Trennung der Inhaltsbereitstellung erhalten Sie eine bessere Möglichkeit, die Leistung zu überwachen und zu optimieren.