22.10.2021, 01:13 | #8 |
Боец
|
Вот готовый проект сериализации\десериализации JSON\XML, на базе Newtonsoft.Json. Попробуйте, сравните. Как раз реализуется концепция "за счёт создания структуры классов, соответствующих структуре получаемого JSON, и прямая десериализация". Но скорость обработки от этого не зависит.
Ремарки: - В части JSON это в бОльшей степени даунгрейд класса FormJsonSerializer из D365 - В части XML написано с нуля - Всё это реализовано в разгар событий августа 2020 в Беларуси, под шум взрывающихся гранат и стрельбы, поэтому есть огрехи и частности в коде. Вылизывать уже не было сил. - Принцип использования как в AX2012\D365\.Net: создаём класс-контракт (можно вложенные), проставляем аттрибуты на методах, которые необходимо сериализоывать. Уровень вложенности значения не имеет. - Вместо аттрибутов, которые AX2009 нативно не поддерживает, используются специального вида макрос, тут картинка Вот так вызываем (в проекте есть джоб) X++: static void AXSerializerTutorial_JSON_XML(Args _args) { VendTable vendTable; DCVendor dcVendor; DCVendors dcVendors; Counter idx; str json, xml; ; dcVendors = DCVendors::construct(); while select vendTable order by RecId desc { dcVendor = DCVendor::constructVendTable(vendTable); dcVendors.parmVendors().addEnd(dcVendor); idx ++; if (idx == 3) { break; } } dcVendors.parmVendors(dcVendors.parmVendors()); // powinno być tak ;) json = dcVendors.serialize(HTTPRequestContentType::Json); xml = dcVendors.serialize(HTTPRequestContentType::XML); info(json); info(xml); dcVendors = dcVendors.deserialize(json, HTTPRequestContentType::Json); // dcVendors = dcVendors.deserialize(xml, HTTPRequestContentType::XML); // something went wrong... to be debugged } Получаем XML Да, прицел был больше на JSON, поэтому XMLная часть не особо отлаживалась - Я уже вижу на картинке не совсем верные наименования узлов + получил взлёт при десиарелизации. Наврное мелочь, но это не точно В общем попробуйте - расскажите по скорости и в целом, как оно. SharedProject_AXSerializer_JSON_XML.zip |
|
|
За это сообщение автора поблагодарили: mazzy (5), trud (10), raz (5), sukhanchik (6), Ace of Database (10), vmoskalenko (6), Sergey Petrov (1), S.Kuskov (10). |
Теги |
aif, ax2012, json, services, wcf |
|
|