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



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

我们尝试过的一件事是使用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的元数据端点为您生成类。

相关内容

  • 没有找到相关文章

最新更新