Кодирование вложенного объекта JSON с использованием Newtonsoft.JsonC#

Место общения программистов C#
Ответить
Anonymous
 Кодирование вложенного объекта JSON с использованием Newtonsoft.Json

Сообщение Anonymous »

Я пытаюсь создать вложенный объект JSON для конечной точки API загрузки. У меня возникли проблемы с формированием кода для вложенного объекта. Когда я вызываю конечную точку, чтобы опубликовать данные на их сайте, я получаю ошибку 400 Bad Request. Я использую Newtonsoft.Json. Когда я удаляю DisciplineData из строки, POST проходит успешно, но требуются данные в классе DisciplineData.
public class UploadClassParameters
{
public int CompYear { get; set; }
public int CompID { get; set; }
public string ClassNumber { get; set; }
public List Results { get; set; }
}

public class Result
{
public string Placing { get; set; }
public int HorseID { get; set; }
public Dressage DisciplineData { get; set; }
}

public class Dressage // THIS IS THE NESTED OBJECT
{
public double TotalScore { get; set; }
public double TotalPercent { get; set; }
public string DressageLevel { get; set; }
}

Используя показанный здесь код, приведенные выше классы создают это (что не удается при вызове конечной точки):
{
"CompYear": 2025,
"CompID": 1214,
"ClassNumber": "53",
"Results": [
{
"Placing": "1",
"HorseID": 5536384,
"DisciplineData": {
"TotalScore": 169.0,
"TotalPercent": 67.6,
"DressageLevel": "FIRST LEVEL, TEST 2",
}
}
]
}

Чтобы увидеть, как формируются их данные, я вызвал их конечную точку GetClass, и это было возвращено:
{
"CompYear": 2025,
"CompID": 1214,
"ClassNumber": "53",
"Results": [
{
"Placing": "1",
"ID": 5536384,
"DisciplineData":{\"TotalScore\":169.0,\"TotalPercentage\":67.6,\"DressageLevel\":\"FIRST LEVEL, TEST 2\";}]}
}

DisciplineData — это вложенный объект. Я не знаком с обратной косой чертой. И провели небольшое исследование, чтобы убедиться, что он «сериализуется».
Это текущий код:
var elements = new UploadClassParameters
{
CompYear = 2025,
CompID = 1234,
ClassNumber = "12",
Results = new List
{
new Result
{
Placing = "1",
HorseID = 4567,
DisciplineData = new Dressage
{
TotalScore = 169.0,
TotalPercent = 67.600,
DressageLevel = "FIRST LEVEL, TEST 2",
}
}
},
};

string jsonPayload = Newtonsoft.Json.JsonConvert.SerializeObject(elements);
string signature = CreateSignature(clientID, clientSecret);

using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://api.XXXXXX.org"); // API endpoint

// client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", signature);

var content = new StringContent(jsonPayload, System.Text.Encoding.UTF8, "application/json");

HttpResponseMessage response = await client.PostAsync("/api/results/uploadclass", content);
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... nsoft-json
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»