Requirement:
Developer is consuming an external REST web-service in D365/X++ . Response is in the JSON format. Developer needs to DeSerialize incoming JSON so that values can be used later in the system.
Sample Code:
- Create a contract class
[DataContract] class JSONContract { String50 parmFirst, parmSecond; [ DataMemberAttribute('parmFirst') ] public String50 parmFirst(String50 _parmFirst = parmFirst) { parmFirst = _parmFirst; return parmFirst; } [ DataMemberAttribute('parmSecond') ] public String50 parmSecond(String50 _parmSecond = parmSecond) { parmSecond = _parmSecond; return parmSecond; } }- Sample Class
class RunnableClassABC { /// <summary> /// Runs the class with the specified arguments. /// </summary> /// <param name = "_args">The specified arguments.</param> public static void main(Args _args) { str json; List values = new List(Types::String); ListEnumerator value; json = '[{"FieldValues": [{"parmFirst": "ValueFirst", "parmSecond": "ValueSecond", "parmList":[{"parmFirst": "ValueFirst", "parmSecond": "ValueSecond"}] }]}]'; // Deserializing Json values = FormJsonSerializer::deserializeCollection(classnum(List), json, Types::Class, classStr(JSONContract)); value = values.getEnumerator(); while(value.moveNext()) { JSONContract JSONContractCurrent = value.current(); info(strFmt("%1 %2",JSONContractCurrent.parmFirst(), JSONContractCurrent.parmSecond())); } } }