【问题标题】:Cannot deserialize JSON string to class [duplicate]无法将 JSON 字符串反序列化为类 [重复]
【发布时间】:2019-03-14 11:06:20
【问题描述】:

我收到错误:无法将当前 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; }
        
    }
}

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

【问题讨论】:

  • List&lt;Posts&gt; posts= JsonConvert.DeserializeObject&lt;List&lt;Posts&gt;&gt;(responseValue);

标签: c# json serialization json.net


【解决方案1】:

你的 json 不是一个单一的对象。它是一个对象数组,因此请尝试在 List&lt;Post&gt; 中反序列化

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

然后您可以使用foreach 迭代此posts

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

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2021-04-27
    • 2012-08-15
    相关资源
    最近更新 更多