Как преобразовать 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 массива.
Здесь <br/> <pre><code class="cs">var deserializationJson = JsonSerializer.Deserialize&lt;List&lt;DeserializationJson&gt;&gt;(jsonString);</code></pre> <br/> должно быть: <br/> <pre><code class="cs">var deserializationJson = JsonSerializer.Deserialize&lt;List&lt;string&gt;&gt;(jsonString);</code></pre>
Насколько я помню, для десериализации массива строк json в List не требуется передавать отдельный класс DeserializationJson, можно использовать сразу <code>JsonSerializer.Deserialize&lt;List&lt;string&gt;&gt;</code> , попробуйте так: <br/> <pre><code class="cs">using System.Text.Json;

namespace ReflTest;

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

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