繁体   English   中英

从ReadAsStreamAsync或ReadAsStringAsync反序列化为CRM实体

[英]Deserialize to a CRM Entity from ReadAsStreamAsync or ReadAsStringAsync

我正在通过HttpResponseMessage response = Helper.SendRequest(...)调用Web API,我需要将response反序列化为CRM实体Annotation list

我们尝试过的一件事就是使用ReasAsStreamAsync

List<Annotation> _listAnnotation = new List<Annotation>();
MemoryStream stream1 = (MemoryStream)response.Content.ReadAsStreamAsync().Result;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Annotation>));

ser.WriteObject(stream1, _listAnnotation);
stream1.Position = 0;
List<Annotation> lst = (List<Annotation>)ser.ReadObject(stream1);

但它抛出异常Stream does not support writing.

我们也尝试过ReadAsStringAsync

var jsonString = response.Content.ReadAsStringAsync();
jsonString.Wait();
List<Entity> model = (List<Entity>)JsonConvert.DeserializeObject<List<Entity>>(jsonString.Result);

jsonString的值是

[{"Id":"00000000-0000-0000-0000-000000000000","LogicalName":"annotation","Attributes":[{"Key":"filename","Value":"Microsoft.SharePoint.Client.FileInformation"},{"Key":"documentbody","Value":"JVBERi0xLjUKJfv8/f4KNCAwIG9iago8PAovVGFicyAvUwovU3RydWN0UGFyZW50cyAwCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlcyA2IDAgUgo......g=="},{"Key":"mimetype","Value":"text/plain"}],"EntityState":null,"FormattedValues":[],"RelatedEntities":[]}]

但它表示Cannot create and populate list type Microsoft.Xrm.Sdk.AttributeCollection.

我已经互换了EntityAnnotation但无济于事。

哪种方法更好,最接近我需要做的? 请让我知道您的建议或答案。 我已经被困在这里好几天了。 非常感谢!

我不相信旧的“早期绑定类型”和Entity与新的web api兼容。 您可以创建自己的POCO和/或应该有可以使用webapi的元数据端点为您生成类的生成器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM