Как преобразовать JSON массив обратно в объекты/данные?

Как можно исправить ошибку в коде, который пытается десериализовать JSON массив в List<DeserializationJson>?
  • 30 мая 2024 г. 7:41
Ответы на вопрос 3
Для того чтобы преобразовать JSON массив обратно в объекты/данные, можно воспользоваться библиотекой для работы с JSON, такой как GSON или Jackson. 

Пример преобразования JSON массива в объекты с использованием библиотеки GSON:

```java
Gson gson = new Gson();
DeserializationJson[] objects = gson.fromJson(jsonArray, DeserializationJson[].class);
```

Чтобы исправить ошибку в коде, который пытается десериализовать JSON массив в List<DeserializationJson>, нужно преобразовать JSON массив в List, а не массив:

```java
Gson gson = new Gson();
Type listType = new TypeToken<List<DeserializationJson>>() {}.getType();
List<DeserializationJson> objects = gson.fromJson(jsonArray, listType);
``` 

Этот код создаст List объектов DeserializationJson из JSON массива.
Здесь 
var deserializationJson = JsonSerializer.Deserialize<List<DeserializationJson>>(jsonString);

должно быть:
var deserializationJson = JsonSerializer.Deserialize<List<string>>(jsonString);
Насколько я помню, для десериализации массива строк json в List не требуется передавать отдельный класс DeserializationJson, можно использовать сразу JsonSerializer.Deserialize<List<string>> , попробуйте так: 
using System.Text.Json;

namespace ReflTest;

internal class DesJson
{
    public IEnumerable<string> RunDesir(string jsonString)
    {
        var result = JsonSerializer.Deserialize<List<string>>(jsonString) ?? Enumerable.Empty<string>();
        return result.Select(item => item.ToString());
    }
}

class Program
{
    static void Main(string[] args)
    {
        string jsonString = "[\"1\",\"2\",\"3\",\"4\",\"5\"]";
        DesJson desJson = new DesJson();
        IEnumerable<string> result = desJson.RunDesir(jsonString);
        result.ToList().ForEach(Console.WriteLine);
    }
}
Похожие вопросы