第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

將JSON反序列化為C#類

將JSON反序列化為C#類

C#
SMILET 2019-11-02 10:41:08
以下是成功創(chuàng)建新的“工作代碼”條目后從REST API獲得的(略)簡化的響應。我需要將響應反序列化為某些類,但是我很困惑。作為參考,我在.NET 3.5(在SQL Server 2008 R2中的SSIS腳本中運行)中使用JSON.NET嘗試反序列化。這是JSON-我顯然無法控制它,因為它來自其他人的API:{   "results":{      "jobcodes":{         "1":{            "_status_code":200,            "_status_message":"Created",            "id":444444444,            "assigned_to_all":false,            "billable":true,            "active":true,            "type":"regular",            "name":"1234 Main Street - Jackson"         },         "2":{            "_status_code":200,            "_status_message":"Created",            "id":1234567890,            "assigned_to_all":false,            "billable":true,            "active":true,            "type":"regular",            "name":"4321 Some Other Street - Jackson"         }      }   }}在我的C#代碼中,我確實定義了一個“ JobCode”類,該類僅將JSON值部分映射到屬性-我對返回給我的所有數(shù)據(jù)不感興趣:[JsonObject]class JobCode{    [JsonProperty("_status_code")]    public string StatusCode { get; set; }    [JsonProperty("_status_message")]    public string StatusMessage { get; set; }    [JsonProperty("id")]    public string Id {get; set;}    [JsonProperty("name")]    public string Name { get; set; }}我正在嘗試通過此調用反序列化數(shù)據(jù):newResource = JsonConvert.DeserializeObject<JobCode>(jsonResponse);其中jsonResponse是上面輸出的代碼。當我執(zhí)行代碼時,“ newResource”總是返回為空-這并不意外,因為我知道數(shù)據(jù)中實際上有多個作業(yè)代碼,并且此代碼試圖將其反序列化為單個JobCode對象。我嘗試創(chuàng)建一個名為“ JobCodes”的新類,如下所示:class JobCodes{    [JsonProperty("jobcodes")]    public List<JobCode>_JobCodes { get; set; }}然后我嘗試調用此命令:newResource = JsonConvert.DeserializeObject<JobCodes>(jsonResponse);但是問題仍然存在-我的返回對象為null。我認為讓我失望的是標識符“ 1”和“ 2”的存在。我不知道如何在我的對象設計和/或JSON.NET類/屬性屬性(例如[JsonObject],[JsonProperty]等)的使用中考慮它們的存在。當我通過JSON2CSharp運行JSON數(shù)據(jù)時,它構造了一些看起來很奇怪的類,因此尚未證明它太有效。我已經(jīng)用幾個不同的驗證器驗證了JSON,并且都將其檢出-我只是不知道我在這里缺少什么。最終,我想從JSON數(shù)據(jù)返回一個List,但是我為實現(xiàn)該目標而感到困惑。
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

由于您無法更改JSON的方案,并且無法設置常數(shù)的屬性編號,因此建議您使用 JObject


var jobject = JObject.Parse(json);


var results = jobject["results"];

var jobcodes = results["jobcodes"];


var output = jobcodes.Children<JProperty>()

                     .Select(prop => prop.Value.ToObject<JobCode>())

                     .ToList();

警告:代碼假定JSON始終處于正確的架構中。您還應該處理無效的架構(例如,屬性不是JobCodescheme的地方)。


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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號