![]() |
#10 |
Участник
|
Этот Newtonsoft.Json имеет проблемы при передаче из аксапты real типа. Т.е. всех суммовых значений.
![]() Вот пример X++: static void Job3991_axforum(Args _args) { GRD_JsonWriter jsonWriter; real r; System.Double netDouble; System.Single netSingle; System.Decimal netDecimal; str ret; Newtonsoft.Json.Linq.JTokenWriter writer; Newtonsoft.Json.Linq.JObject jObject; ClrObject clrObject; System.Globalization.NumberFormatInfo numinf; ; r = 268.17; writer = new Newtonsoft.Json.Linq.JTokenWriter(); writer.WriteStartObject(); writer.WritePropertyName("params"); writer.WriteStartObject(); writer.WritePropertyName("VATAmount_xppReal"); writer.WriteValue(r); writer.WritePropertyName("VATAmount_Row"); writer.WriteRawValue("268.17"); netDouble = r; writer.WritePropertyName("VATAmount_netDouble"); writer.WriteValue(netDouble); netSingle = r; writer.WritePropertyName("VATAmount_netSingle"); writer.WriteValue(netSingle); netDecimal = New System.Decimal(netDouble); writer.WritePropertyName("VATAmount_netDecimalViaDouble"); writer.WriteValue(netDecimal); netDecimal = New System.Decimal(netSingle); writer.WritePropertyName("VATAmount_netDecimalViaSingle"); writer.WriteValue(netDecimal); numinf = new System.Globalization.NumberFormatInfo(); numinf.set_NumberDecimalSeparator("."); netDecimal = System.Decimal::Parse("268.17", numinf); info(CLRInterop::getAnyTypeForObject(netDecimal)); writer.WritePropertyName("VATAmount_netDecimal"); writer.WriteValue(netDecimal); writer.WriteEndObject(); writer.WriteEndObject(); clrObject = writer.get_Token(); jObject = clrObject; ret = jObject.ToString(); info(ret); } Цитата:
{
"params": { "VATAmount_xppReal": 268.16999999999996, "VATAmount_Row": 268.17, "VATAmount_netDouble": 268.16999999999996, "VATAmount_netSingle": 268.16999999999996, "VATAmount_netDecimalViaDouble": 268.17, "VATAmount_netDecimalViaSingle": 268.17, "VATAmount_netDecimal": 268.17 } } Приходится данные через System.Decimal передавать. Или самим значение параметра в строку конвертировать и пихать туда через WriteRawValue Последний раз редактировалось Logger; 05.07.2017 в 15:45. |
|
Теги |
aif, ax2012, azure service bus, json, округление |
|
|