Diese Library App stellt diverse Funktionen zu Verfügung, welche BC Datentypen in JSON Objekte serialisieren,
um diese beispielsweise an ein REST Webservice zu senden, ohne dass man die JSON Objekte "manuell" aufbauen muss.
Docs / NVXSUL Serialization Utility Library / Aufgaben Arbeiten mit der App
Über die Codeunit SULSerializationUtilNVX kann von einer abhängigen Extension die Funktion Serialize aufgerufen werden diese nimmt unterschiedliche Paramter an:
Parameter
VarToSerialize: Variant -> der Datentyp welcher serialisiert werden soll
ISerializer: Interface SULISerializerNVX -> Implementierung der Serialisierung bspw. JSON
SerializableType: Enum SULSerializableTypeNVX -> die Art des zu serialisierenden Datentyps
FieldNoSelection: List of [Integer]
Weitere Serialisierungsformate wie z.B.: XML sind über das Interface SULISerializerNVX und das Enum SULSerializerTypeNVX zu implementieren.
JSON Serialisierung von Records
procedure GetCustomerAsJSONObject(Customer: Record Customer): JsonObject
var
SerializationUtil: Codeunit SULSerializationUtilNVX;
JObject: JsonObject;
BodyContent: Text;
begin
BodyContent := SerializationUtil.Serialize(Customer, Enum::SULSerializerTypeNVX::JSON, Enum::SULSerializableTypeNVX::Record);
exit(JObject.WriteTo(BodyContent));
end;
procedure GetCustomerSelectedFieldsAsJSONObject(Customer: Record Customer; SlectedFields: List of [Integer]): JsonObject
var
SerializationUtil: Codeunit SULSerializationUtilNVX;
JObject: JsonObject;
BodyContent: Text;
begin
BodyContent := SerializationUtil.Serialize(Customer, Enum::SULSerializerTypeNVX::JSON, SelectedFields, Enum::SULSerializableTypeNVX::Record);
exit(JObject.WriteTo(BodyContent));
end;
JSON Deserialisierung von Records
local procedure UpdateCustomerFromApi(CustomerNo: Code[20]; Response: Text)
var
Customer: Record Customer;
SerializationUtil: Codeunit SULSerializationUtilNVX;
JsonFieldMapping: Dictionary of [Integer, Text];
DeserializationFailed: List of [Text];
Json: JsonObject;
begin
//JsonFieldMapping consists of the Field No. of the BC Record as key and the respective Json Token from the response as value
//DeserializationFailed contains the Json Tokens which must be deserialized manually
ThrowError.IfCustomerDoesNotExist(Customer, CustomerNo);
JsonFieldMapping.Add(2, 'name');
JsonFieldMapping.Add(4, 'name2');
Json.ReadFrom(Response);
SerializationUtil.Deserialize(
Json,
MKSHeader,
Enum::SULDeserializerTypeNVX::JSON,
JsonFieldMapping,
DeserializationFailed);
end;
Möchten Sie wissen, was sich in der App geändert hat?
Nachfolgend finden Sie eine Übersicht über die neuen Features und Änderungen, die in den Updates vorgenommen wurden.
Build-Übersicht in DevOps
NVXSUL 2.0.2.0
Änderungen
Anpassungen für BC 23 Kompatibilität.
NVXSUL 2.0.1.0
ab Business Central 17 2022/02/03
Verbesserungen
JSON Deserialisierung auf für noch nicht vorhandene Datensätze implementiert.
NVXSUL 2.0.0.0
ab Business Central 17 2022/01/26
Verbesserungen
JSON Deserialisierung auf Basis von Record Datentypen wurde implementiert.