生成XML文档的Intuit QBO SDK更新Bill错误ItemElementName的值与System.Decimal的类型不匹配

RJB*_*man 4 sdk xml-serialization quickbooks-online

我正在使用Intuit QBO SDK v3 Intuit.Ipp.QueryFilter.QueryService(Of Bill)获取由Bill.Id过滤的Bills集合.该集合已成功填充.我想修改Bill的某些ItemBasedExpenseLineDetail成员的BillableStatus,并使用Intuit.Ipp.DataService.DataService.Update(Of Bill)更新它.无论我是否实际修改了Bill的任何属性,Update方法都会生成以下错误:

Intuit.Ipp.E​​xception.SerializationException:生成XML文档时出错.---> System.InvalidOperationException:生成XML文档时出错.---> System.InvalidOperationException:ItemElementName的值与System.Decimal的类型不匹配; 你需要将它设置为Intuit.Ipp.Data.ItemChoiceType.@ UnitPrice.在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write163_ItemBasedExpenseLineDetail(字符串N,串NS,ItemBasedExpenseLineDetail O,布尔ISNULLABLE,布尔needType)在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write181_Line(字符串N,串NS,线O,在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write185_Bill(String n,String ns,Bill o,Boolean isNullable,Boolean isNullable,Boolean isNullable,Boolean needType)

Bill的所有ItemBasedExpenseLineDetail成员的值似乎正好是Intuit.Ipp.Data.ItemChoiceType.UnitPrice,如Watch或Immediate Window所示,例如:

?DirectCast(qboItem.Line(0).AnyIntuitObject,Intuit.Ipp.Data.ItemBasedExpenseLineDetail).ItemElementName

UnitPrice {2}

任何想法如何执行更新没有此错误或在哪里进一步查看?

RJB*_*man 7

Aaaaaand,就在我发布这个问题时,我在Intuit.Developer社区找到了答案

我猜你有SDK的默认设置,其中请求格式是XMl,响应是Json.

这会导致您在上面提到的序列化问题.

请在代码中添加以下行,以获得xml中的请求/响应或json格式的boht.

context.IppConfiguration.Message.Request.SerializationFormat = Intuit.Ipp.Core.Configuration.SerializationFormat.Json;

context.IppConfiguration.Message.Response.SerializationFormat = Intuit.Ipp.Core.Configuration.SerializationFormat.Json;