C # Обнаружен неожиданный узел StartObject для свойства InputArguments при чтении из программы чтения JSON.Ожидается узел 'PrimitiveValue' - PullRequest
0 голосов
/ 03 марта 2019

Я использую RestClient для передачи параметра JSON в api в C #. Но я получаю ответ

«При чтении из JSON обнаружен неожиданный узел« StartObject »для свойства с именем« InputArguments »считыватель. Ожидается узел 'PrimitiveValue' "

Я использую код ниже в C #

var client_startRobot = new RestClient("https://xxxx.xxxx.com/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs");
var request_startRobot = new RestRequest(Method.POST) ;
request_startRobot.AddParameter("Authorization", string.Format("Bearer " + result), ParameterType.HttpHeader);
request_startRobot.AddHeader("content-type", "application/json");
string parameter = "{\"startInfo\":{\"ReleaseKey\": \"ds32rd1-6c98-42f542d-23bb8111ac91d\",\"RobotIds\": [1],\"JobsCount\": 0,\"Strategy\": \"Specific\",\"InputArguments\": {\"add_name\": \"xxxxx-xxx-\"}}}";
request_startRobot.AddParameter("application/json; charset=utf-8", parameter, ParameterType.RequestBody);
IRestResponse response_startRobot = client_startRobot.Execute(request_startRobot);

1 Ответ

0 голосов
/ 03 марта 2019

Похоже, это вопрос тщательного чтения документации API.Предполагая, что вы пытаетесь вызвать оркестратор, как описано здесь , я нахожу этот пример очень похожим на ваш.

{ "startInfo":
   { "ReleaseKey": "5b754c63-5d1a-4c37-bb9b-74b69e4934bf",
     "Strategy": "Specific",
     "RobotIds": [ 1553 ],
     "NoOfRobots": 0,
     "Source": "Manual",
     "InputArguments": "{\"message\":\"Aloha\"}"
   } 
}

Обратите внимание, что значение InputArguments на самом деле является простой строкой, не фактический JSON (строка содержит экранированную строку JSON).

Ваш запрос выглядит следующим образом:

"InputArguments": {"add_name": "xxxxx-xxx-"}

Когда согласно приведенному примеру он должен выглядеть следующим образомэто:

"InputArguments": "{\"add_name\": \"xxxxx-xxx-\"}"

Похоже, вам придется "дважды экранировать" эту часть вашей строки, примерно так:

\"InputArguments\": \"{\\\"add_name\\\": \\\"xxxxx-xxx-\\\"}\"

На самом деле создание строго типизированного объекта запроса иоставление сериализации на вашем REST-клиенте может облегчить чтение.

...