Передайте JSON в Dynamics CRM SharedVariable вместо строки - PullRequest
1 голос
/ 29 марта 2020

У меня есть данные, которые сериализуются как JSON, которые затем должны быть добавлены в Dynamics PluginExeutionContext в SharedVariable. Проблема в том, что содержимое JSON передается в виде строки и не может быть проанализировано как JSON на другой стороне приемника.

Вот как оно передается сейчас:

   "SharedVariables": [
         "key": "Telemetry_Log",
         "value": "JsonContent"
       },
   ]

Мне нужно иметь «JsonContent» без двойных кавычек, как это

   "SharedVariables": [
         "key": "Telemetry_Log",
         "value": JsonContent
       },
   ]

Сначала я сериализовал данные в JSON и передал строку в контекст следующим образом:

_executionContext.SharedVariables.Add(TelemetryLogSharedVariables.CustomUserLog.GetDescription(), _loggerContainerUser.ConvertToJson()

Вторая попытка состояла в том, чтобы вернуть список сущностей CRM в надежде, что Dynamics его сериализует.

Последняя попытка была привести строку JSON к объекту:

_executionContext.SharedVariables.Add(TelemetryLogSharedVariables.CustomUserLog.GetDescription(), (Object)_loggerContainerUser.ConvertToJson()

Ничего не получалось, и я всегда получал строку JSON в двойных кавычках.

У кого-нибудь есть совет?

1 Ответ

1 голос
/ 29 марта 2020

Вам необходимо «создать класс DataContract, который определит модель данных для JSON данных» и десериализовать (обратный инжиниринг) строку JSON в объект, используя DataContractJsonSerializer на другом конце. Подробнее

Источник : Сериализация данных в JSON строка

using (MemoryStream SerializememoryStream = new MemoryStream())
                {
                    //create a sample data of type Student Class add details
                    Student NewStudent = new Student();
                    NewStudent.FullName = "Sam";
                    NewStudent.JobTitle = "Developer";
                    NewStudent.Contact = "808-2125454";
                    NewStudent.Country = "India";
                    NewStudent.ZIPCode = "400005";

                    //initialize DataContractJsonSerializer object and pass Student class type to it
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Student));
                    //write newly created object(NewStudent) into memory stream
                    serializer.WriteObject(SerializememoryStream, NewStudent);

                    //use stream reader to read serialized data from memory stream
                    StreamReader sr = new StreamReader(SerializememoryStream);

                    //get JSON data serialized in string format in string variable 
                    string Serializedresult = sr.ReadToEnd();
                }

Назначение : Десериализация данных, полученных в JSON строка для объекта

using (MemoryStream DeSerializememoryStream = new MemoryStream())
                {
                    //Json String that we get from web api 
                    string ResponseString = "{\"FullName\":\"" + "Sam" + "\",\"JobTitle\":\"" + "Developer" + "\",\"Contact\":\"" + "808-124567" + "\",\"Country\":\"" + "India" + "\",\"ZIPCode\":\"" + "400005" + "\"}";

                    //initialize DataContractJsonSerializer object and pass Student class type to it
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Student));

                    //user stream writer to write JSON string data to memory stream
                    StreamWriter writer = new StreamWriter(DeSerializememoryStream);
                    writer.Write(ResponseString);
                    writer.Flush();

                    DeSerializememoryStream.Position = 0;
                    //get the Desrialized data in object of type Student
                    Student SerializedObject = (Student)serializer.ReadObject(DeSerializememoryStream);
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...