gpt4 book ai didi

c# - 如何将 JArray 转换为通用列表<>

转载 作者:行者123 更新时间:2023-11-30 14:22:44 26 4
gpt4 key购买 nike

通过 http Post,我将 html FormData 发送到我的 Web Api2 Controller 。FormData 包含一个或多个图像,以及客户端属性。

我的前端 Angular 5 服务发送 http post(工作正常):

var url = this.host + 'import/MediaUpload';

return this.http.post(url, formData, options)
.map((result: any) => result._body)
.catch(this.handleError);

我想将 FormData 转换为 MediaInfo 类的通用列表(在此 MediaUpload() 方法下定义):

public async Task<HttpResponseMessage> MediaUpload(int projectId, int sectionId)
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}

var provider = await Request.Content.ReadAsMultipartAsync<InMemoryMultipartFormDataStreamProvider>(new InMemoryMultipartFormDataStreamProvider());
//access form data
NameValueCollection formData = provider.FormData;

List<MediaInfo> listMedia = new List<MediaInfo>();

//dynamic jsonData = JObject.Parse(formData["MediaInfo"]); // THROWS ERROR
JArray ary = JArray.Parse(formData["MediaInfo"]);

foreach (var item in ary) {
//listMedia.Add((MediaInfo)item); // ???
Console.WriteLine(item);
}

//access files
IList<HttpContent> files = provider.Files;

HttpContent file1 = files[0];
var thisFileName = file1.Headers.ContentDisposition.FileName.Trim('\"');

// additional file upload code removed, working fine..

var response = Request.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("DocsUrl", URL);
return response;
}

public class MediaInfo
{
public string PatientID { get; set; }
public string PatientFirstName { get; set; }
public string PatientLastName { get; set; }
public string PatientUID { get; set; }
public string PatientDOB { get; set; }
public string ExamDate { get; set; }
public string ExamDevice { get; set; }
public string SerialNo { get; set; }
public string Eye { get; set; }
public int DeviceID { get; set; }
public int CSIInstanceID { get; set; }
public int MediaNo { get; set; }
public string Procedure { get; set; }
public string FileName { get; set; }
public int FileSize { get; set; }
}

我以为我可以做类似的事情:

 listMedia.Add((MediaInfo)item;

但我在某处遗漏了正确的转换。

最佳答案

您可以转换 JObject使用 .ToObject<T>() 选择您的类型方法。

https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JToken_ToObject__1_1.htm

在这种情况下,您希望代码如下所示:

listMedia.Add(item.ToObject<MediaInfo>());

关于c# - 如何将 JArray 转换为通用列表<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48212041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com