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

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

key值為動態時反序列化Json數據

key值為動態時反序列化Json數據

C#
至尊寶的傳說 2022-12-31 13:44:22
我多年來一直在使用 JSON,但我從未遇到過鍵值是動態的情況。我確信還有其他情況,但在我的特定情況下,我正在嘗試反序列化 LinkedIn 流。以下是在范圍設置為 r_liteprofile 時發出的數據返回請求的示例。我試過使用字典,但返回值始終為空。以下是 LinkedIn API 調用返回的數據示例:{  "id": "REDACTED",  "firstName": {    "localized": {      "en_US": "Tina"    },    "preferredLocale": {      "country": "US",      "language": "en"    }  },  "lastName": {    "localized": {      "en_US": "Belcher"    },    "preferredLocale": {      "country": "US",      "language": "en"    }  },  "profilePicture": {    "displayImage": "urn:li:digitalmediaAsset:B54328XZFfe2134zTyq"  }}我不明白的是在反序列化數據時如何處理“本地化”。如果我預計鍵值將是“en_US”,一切正常。但這不是永遠正確的事情。根據我的研究,不同值的數量是有限的,以下是可用鍵的一個子集。{  "localized": {    "de_DE": "LinkedIn",    "en_US": "LinkedIn",    "es_ES": "LinkedIn",    "in_ID": "LinkedIn"  }}
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您可以通過將您的課程替換為以下內容來將其解析為字典Localised

public Dictionary<string,string> Localised { get; set; }

Newtonsoft.JSON 和 Json.NET 可以自動將這些對象解析成字典。


查看完整回答
反對 回復 2022-12-31
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

我認為它必須是簡單的東西。我曾嘗試用


public Dictionary<string, string> Localized {get; set; }

但結果為空。


對我有用的(如 Joao Paulo Amorim 所建議的那樣)是將 Localized 替換為 Dictionary,如下所示:


public class LastName

{

    public Dictionary<string, string> localized { get; set; }

    public PreferredLocale preferredLocale { get; set; }

}


public class FirstName

{

    public Dictionary<string, string> localized { get; set; }

    public PreferredLocale preferredLocale { get; set; }

}


查看完整回答
反對 回復 2022-12-31
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

為了提取值,我使用了以下內容


var data = System.IO.File.ReadAllText(<<file address>>);

var result = JsonConvert.DeserializeObject<LinkedLiteProfile>(data);

var firstName = result.firstName.localized.Values.FirstOrDefault();


查看完整回答
反對 回復 2022-12-31
  • 3 回答
  • 0 關注
  • 177 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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