我有一个C#API,目前我们的许多网站都在使用它。我的API被发送了一个JSON请求,我根据该请求中的细节做了一些事情,然后发送一个JSON响应,其中包含API的工作结果和一些其他信息。
我现在需要在JSON响应中包含一些额外的信息。
我需要从一个特定的Url中读取一个文件(这个文件可能是一个图像、一个MS word文档、一个PDF等——可能是任何东西)。
我已经知道url中这个文件的mime类型(以便确定它是否对我有效)。
如果它是支持的file/mime类型,我希望从指定的url中检索该文件,并最终将其转换/序列化为JSON,并将其包含在我的JSON响应中。
在某些情况下,我实际上可能有多个文件/URL,需要检索、转换并包含在JSON响应中(理想情况下,作为一个数组,位于名为"Attachments"的属性中)。
我以前曾使用Newtonsoft.Json对具有常规属性的类进行序列化和反序列化,但在读取文件并将其作为Json发送方面没有做任何工作,也找不到任何明确的示例来说明如何做到这一点。
将文件数据视为字节数组。然后,它可以与数据传输对象一起在JSON中序列化。
public class YourTDO {
...some other properties...
public byte[] FileData { get; set; }
}
从外部源以字节数组的形式读取文件,分配FileData属性并像往常一样序列化对象。
您可以使用API直接为文件提供服务,并且只在JSON中提供标识符。根据你试图对静态内容做什么(假设你的PDF等是静态的),你也可以在AWS上托管文件,并使标识符成为文件的唯一链接。
在大多数情况下,JSON对象是您传递的某种对象,在某些情况下,您可能会引用相同的文件。分离内容交付也为您提供了更好的机会来监控和调整性能。