Как выбрать нужную Json строку из двух различных?

Как можно определить, какой именно JSON был получен - нормальный ответ или с ошибкой - и опустить обработку нормального JSON-ответа в коде на C#?
  • 2 марта 2024 г. 11:38
Ответы на вопрос 2
1. Для выбора нужной JSON строки из двух различных можно использовать специальные библиотеки для работы с JSON в C# (например, Newtonsoft.Json). 

Пример кода для выбора нужной строки:

```csharp
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;

string json1 = "{\"message\": \"success\"}";
string json2 = "{\"error\": \"invalid input\"}";

JObject obj1 = JObject.Parse(json1);
JObject obj2 = JObject.Parse(json2);

if (obj1.ContainsKey("message"))
{
    Console.WriteLine("Найден нужный JSON: " + json1);
}
else if (obj2.ContainsKey("error"))
{
    Console.WriteLine("Найден нужный JSON: " + json2);
}
```

2. Для определения того, какой именно JSON был получен - нормальный ответ или с ошибкой, можно проверить наличие ключей, указывающих на ошибку (например, "error"). Если такой ключ есть, то это JSON с ошибкой, и его можно обработать соответствующим образом.

Пример кода для определения JSON с ошибкой:

```csharp
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;

string json = "{\"error\": \"invalid input\"}";

JObject obj = JObject.Parse(json);

if (obj.ContainsKey("error"))
{
    string errorMessage = obj["error"].ToString();
    Console.WriteLine("Ошибка: " + errorMessage);
}
else
{
    // Обработка нормального JSON-ответа
}
```
Нужно перевести оба json ответа в классы, затем объединить их в один класс. 
Вот так объявить failed, с возможностью, что он может быть null:
public int? failed { get; set; }
После выполнения десериализации json, проверять failed на null:
if(filed.failed != null) {
// response with error
} else {
// all ok
}
Похожие вопросы