亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法將當前JSON對象(例如{“ name”:“ value”})反序列化為類型

無法將當前JSON對象(例如{“ name”:“ value”})反序列化為類型

白衣染霜花 2019-11-20 10:11:50
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; }        }    }}無法反序列化當前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"}]}
查看完整描述

3 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

為了清楚起見,除了@SLaks的答案,這意味著您需要更改此行:


List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);

像這樣:


RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);


查看完整回答
反對 回復 2019-11-20
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

由于錯誤消息正盡力告訴您,您無法將單個對象反序列化為集合(List<>)。

您想反序列化為單個RootObject


查看完整回答
反對 回復 2019-11-20
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

這也發生在我身上,因為我試圖獲取一個,IEnumerable但是響應只有一個值。請嘗試確保它是您的回復中的數據列表。我用于(用于api url get)解決問題的行如下所示:


HttpResponseMessage response = await client.GetAsync("api/yourUrl");


if (response.IsSuccessStatusCode)

{

    IEnumerable<RootObject> rootObjects =

        awaitresponse.Content.ReadAsAsync<IEnumerable<RootObject>>();


    foreach (var rootObject in rootObjects)

    {

        Console.WriteLine(

            "{0}\t${1}\t{2}",

            rootObject.Data1, rootObject.Data2, rootObject.Data3);

    }


    Console.ReadLine();

}

希望能幫助到你。


查看完整回答
反對 回復 2019-11-20
  • 3 回答
  • 0 關注
  • 1625 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號