Работа с объектами в JSON-формате

Ниже приведен пример использования операции ForeExec для выполнения метода с передачей объекта в JSON-формате. В запросе передаётся наименование выполняемого метода и моникёр объекта среды разработки, содержащего его реализацию. В качестве значения параметра передаётся JSON-структура. Возвращаемый операцией результат также будет в JSON-формате. Выполняемый метод имеет следующий синтаксис:

Метод

В примере C# используется функция FindObjectById, код которой приведён в примере «Получение описания объекта по его идентификатору».

SOAP-запрос:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ForeExec xmlns="http://www.fsight.ru/PP.SOM.Som">
<tFore xmlns="">
  <id>AHHCPKBHELFGGOAEJJPPPODMMPIBEDEEALGKJDIIBMIMFFJM!M!7360</id>
  </tFore>
<tArg xmlns="">
  <methodName>WorkWithJson</methodName>
<args>
<it>
  <k>1</k>
<jsonValue>
<Data>
  <IntValue>123</IntValue>
  <DblValue>123.321</DblValue>
  <StrValue>ABCDEF</StrValue>
  </Data>
  </jsonValue>
  </it>
  </args>
  </tArg>
  </ForeExec>
  </s:Body>
  </s:Envelope>

SOAP-ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
  <ForeExecResult xmlns="http://www.fsight.ru/PP.SOM.Som" xmlns:q1="http://www.fsight.ru/PP.SOM.Som" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">{"json":{"ExecResult":true,"ExecDay":"31.07.2025 00:00:00"}}"</ForeExecResult>
  </soapenv:Body>
  </soapenv:Envelope>

JSON-запрос:

{
"ForeExec" :
{
"tFore" :
{
"id" : "AHHCPKBHELFGGOAEJJPPPODMMPIBEDEEALGKJDIIBMIMFFJM!M!7360"
},
"tArg" :
{
"methodName" : "WorkWithJson",
"args" :
{
"it" :
{
"k" : "1",
"jsonValue" :
{
"Data" :
{
"IntValue" : "123",
"DblValue" : "123.321",
"StrValue" : "ABCDEF"
}
}
}
}
}
}
}

JSON-ответ:

{
"ForeExecResult" : "{"json":{"ExecResult":true,"ExecDay":"31.07.2025 00:00:00"}}""
}
public static ForeExecResult ExecMethodWithJson(MbId mb, string assmId, string methodName)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tExec = new ForeExec()
{
tArg = new ForeExecArg()
{
methodName = methodName,
// JSON-объект в качестве значения параметра
args = new OdArg[1]
{
new OdArg(){ k = 1, jsonValue = new System.Xml.Linq.XElement("Data",
new System.Xml.Linq.XElement("IntValue", "123"),
new System.Xml.Linq.XElement("DblValue", "123.321"),
new System.Xml.Linq.XElement("StrValue", "ABCDEF")).ObjectToXml() }
}
},
// Моникёр объекта среды разработки с реализацией метода
tFore = new ForeId()
{
id = mb.id + "!" + FindObjectById(mb, assmId).k
}
};
// Выполнение метода
var result = somClient.ForeExec(tExec);
return result;
}

См. также:

ForeExec: Операция