本文介绍了无法将当前 JSON 对象(例如 {“name":“value"})反序列化为类型“System.Collections.Generic.List"1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用系统;使用 System.Collections.Generic;使用 System.Linq;使用 System.Text;使用脸书;使用 Newtonsoft.Json;名字空间脸书{课程计划{静态无效主(字符串 [] args){var client = new FacebookClient(acc_ess);动态结果 = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"});字符串 jsonstring = JsonConvert.SerializeObject(result);//jsonstring {"data":[{"target_id":9503123,"target_type":"user"}]}列表datalist = JsonConvert.DeserializeObject(jsonstring);}公共类数据{公共 Int64 target_id { 获取;放;}公共字符串 target_type { 获取;放;}}公共类 RootObject{公共列表数据{得到;放;}}}}
无法反序列化当前的 JSON 对象(例如 {"name":"value"})输入类型'System.Collections.Generic.List`1[facebook.Program+RootObject]'因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化正确.要修复此错误,请将 JSON 更改为 JSON 数组(例如[1,2,3])或更改反序列化类型,使其成为正常.NET 类型(例如,不是像整数这样的原始类型,不是集合类型如数组或列表)可以
我看了其他帖子.
我的 json 看起来像这样:
{"data":[{"target_id":9503123,"target_type":"user"}]}
解决方案
说清楚,除了@SLaks 的回答之外,这意味着您需要更改这一行:
Listdatalist = JsonConvert.DeserializeObject(jsonstring);
像这样:
RootObject datalist = JsonConvert.DeserializeObject(jsonstring);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Facebook;
using Newtonsoft.Json;
namespace facebook
{
class Program
{
static void Main(string[] args)
{
var client = new FacebookClient(acc_ess);
dynamic result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"});
string jsonstring = JsonConvert.SerializeObject(result);
//jsonstring {"data":[{"target_id":9503123,"target_type":"user"}]}
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);
}
public class Datum
{
public Int64 target_id { get; set; }
public string target_type { get; set; }
}
public class RootObject
{
public List<Datum> data { get; set; }
}
}
}
I looked at other posts.
My json looks like this:
{"data":[{"target_id":9503123,"target_type":"user"}]}
解决方案
To make it clear, in addition to @SLaks' answer, that meant you need to change this line :
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);
to something like this :
RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);
这篇关于无法将当前 JSON 对象(例如 {“name":“value"})反序列化为类型“System.Collections.Generic.List"1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!