В настоящее время сталкивается с проблемой при создании строки JSON на C# и пытается отправить ее в веб-API с помощью WebClient.C# JSON String to Web API
В настоящее время у меня есть несколько методов, в первую очередь от того, который работает. Использование Почтальоной отправки следующего набора данных текста через к API работает правильно:
POSTMAN Dataset - Это работает в POSTMAN
{ "record":
{
"form_id": "efe4f66f-b57c-4497-a370-25c0f3d8746a",
"status": "240",
"latitude": -82.638039,
"longitude": 27.770787,
"form_values":
{
"833b": "99999",
"683b": "9999999",
"fa37": "Testing",
"b2e3": "Testing"
}
}
}
В C# Я использую несколько различных способы, чтобы построить это жало с небольшим успехом.
C# Список Method - Newtonsoft.Json.Serialization
Первый строит список, а затем с помощью Newtonsoft.Json играть с ним:
List<Parent> DataList = new List<Parent>();
List<Child> Form = new List<Child.formvalues>();
var Formvals = new Child.formvalues
{
ActionDescription = Row.ActionDescription,
ActionNotes = Row.ActionNotes,
ActionID = Row.ActionID,
AssetID = Row.AssetID
};
Form.Add(Formvals);
var DataElement = new Parent
{
form_id = AppFormID,
latitude = Lat,
longitude = Long,
status = Row.Status,
form_values = Form
};
DataList.Add(DataElement);
string json = JsonConvert.SerializeObject(DataList.ToArray());
результаты Этот код в следующая строка:
[
{\"form_id\":\"efe4f66f-b57c-4497-a370-25c0f3d8746a\",
\"latitude\":-82.638039,
\"longitude\":27.770787,
\"status\":239,
\"form_values\":[
{\"833b\":99999,
\"683b\":9999999,
\"fa37\":\"Testing\",
\"b2e3\":\"Testing\"
}]
}
]
Другая попытка, которую я пытаюсь сделать, нг, на мой взгляд, является самым близким до сих пор:
C# - Строка здания Метод
string Content = @"{ "
+ "\"record\": {"
+ "\"form_id\": "\"" + AppFormID + ""\","
+ "\"status\": "\"" + Row.Status + ""\","
+ "\"latitude\": "+ Lat + ","
+ "\"longitude\": "+ Long + ","
+ "\"form_values\": {"
+ "\"833b\": "\""+Row.AssetID +""\","
+ "\"683b\": "\""+Row.ActionID + ""\","
+ "\"fa37\": "\""+Row.ActionDescription + ""\","
+ "\"b2e3\": "\""+Row.ActionNotes + ""\""
+ "}"
+ "}"
+ "}";
что результаты линии в:
{ \"record\":
{
\"form_id\": \"efe4f66f-b57c-4497-a370-25c0f3d8746a\",
\"status\": \"239\",
\"latitude\": -82.638039,
\"longitude\": 27.770787,
\"form_values\":
{
\"833b\": \"99999\",
\"683b\": \"9999999\",
\"fa37\": \"Testing\",
\"b2e3\": \"Testing\"
}
}
}
вопрос!
Итак, вопрос, кто-то может помочь мне в достижении формата в первом JSON, который я ввел в POSTMAN именно так?
ОБНОВЛЕНИЕ - 6:40 вечера
Web код клиента C# AppURLRef устанавливается в коде дальше и представляется правильным в отладчике. json - результат тестов.
var http = new WebClient();
http.Headers.Add(HttpRequestHeader.ContentType, "application/json");
var response = http.UploadString(AppURLRef, "POST", json);
Результат обновления
"[{\"record\":{\"form_id\":\"efe4f66f-b57c-4497-a370-25c0f3d8746a\",
\"latitude\":-82.638039,
\"longitude\":27.770787,
\"status\":\"240\",
\"form_values\":
[{\"833b\":\"99999\",
\"683b\":\"9999999\",
\"fa37\":\"Testing\",
\"b2e3\":\"Testing\"}]}}]"
Единственная проблема с этим в том, что 833b и 683b не могут быть именами переменных, поскольку они начинаются с числа. И я предположил, что вы имели в виду JsonConvert.SerializeObject (данные); в использовании? – Caz1224
Снимая те, я все еще получаю откат с сервера, говоря, что ему это не нравится – Caz1224
Мне пришлось отказаться от WebClient(), он просто не сработает. Я включил RestClient, а затем создал JSON с вашим методом, и он отлично работает. Спасибо за помощь – Caz1224