c# - 无法将 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; }
}
}
最终版本将通过所有不同的供应商循环。
解决方案
你的 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();
}
输出:
推荐阅读
- proxy - “无法握手”:执行 sudo apt-get update 时出错
- c# - 使用多个数据类型为键反序列化 JSON 文件
- datalog - 防止数据记录逻辑中的对称对
- android - 如何更改特定的(具有特殊价值的)RecyclerView 的 imageview 显示
- plsql - PL/SQL 在不应该的时候要求输入绑定
- python - 未找到“itms-appss:/”的连接适配器
- java - 在 Visual Paradigm 中对 Java 包图进行逆向工程
- javascript - 如何获取特定频道上特定用户的所有消息
- php - stream_socket_enable_crypto():对等证书 CN=`*.hostingcare.net' 与预期的 CN=`mail.domain.com' 不匹配
- scala - 延迟类型推断?