无法将JSON字符串反序列化为类[duplicate]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我收到错误:无法将当前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# json serialization json.net
1个回答
0
投票

你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();
}

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.