首页 > 解决方案 > 无法将 JSON 字符串反序列化为类

问题描述

我收到错误:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'jsonTest.Posts',因为该类型需要 JSON 对象(例如 {"name":"value"})才能正确反序列化。

我现在一定是错过了什么……?

这是我的小型控制台应用程序(此时我对 Json 字符串进行了硬编码):

using System;
using Newtonsoft.Json;
    
    namespace jsonTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                
                var responseValue = @"[{""providerName"":""Aktoo"",""providerIcon"":""logo1.png""},{""providerName"":""Aktii"",""providerIcon"":""logo2.png""}]";
                
                Posts posts = JsonConvert.DeserializeObject<Posts>(responseValue);
    
                Console.WriteLine("test" + posts.ProviderName);
                
                
            }
        }
    }

这是我的帖子类:

using System;
using System.Collections.Generic;
using System.Text;
using Newtonsoft.Json;

namespace jsonTest
{
    class Posts
    {
        [JsonProperty("providerName")]
        public string ProviderName { get; set; }

        [JsonProperty("providerIcon")]
        public string providerIcon { get; set; }
        
    }
}

最终版本将通过所有不同的供应商循环。

标签: c#jsonserializationjson.net

解决方案


你的 json 不是一个单一的对象。它是一个对象数组,所以尝试反序列化List<Post>

List<Posts> posts = JsonConvert.DeserializeObject<List<Posts>>(responseValue);

posts然后你可以通过使用来迭代它foreach

foreach (var item in posts)
{
    Console.WriteLine("providerName: " + item.ProviderName);
    Console.WriteLine("providerIcon: " + item.providerIcon);
    Console.WriteLine();
}

输出:

在此处输入图像描述


推荐阅读