【发布时间】:2019-04-26 15:53:55
【问题描述】:
我多年来一直在使用 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"
}
}
以下是类型定义:
public class Localized
{
public string en_Us { get; set; }
}
public class PreferredLocale
{
public string country { get; set; }
public string language { get; set; }
}
public class LastName
{
public Localized localized { get; set; }
public PreferredLocale preferredLocale { get; set; }
}
public class FirstName
{
public Localized localized { get; set; }
public PreferredLocale preferredLocale { get; set; }
}
public class ProfilePicture
{
public string displayImage { get; set; }
}
public class LinkedLiteProfile
{
public LastName lastName { get; set; }
public FirstName firstName { get; set; }
public ProfilePicture profilePicture { get; set; }
public string id { get; set; }
}
还有代码:
var data = System.IO.File.ReadAllText(<<file address>>);
var result = JsonConvert.DeserializeObject<LinkedLiteProfile>(data);
【问题讨论】:
-
我觉得本地化应该是字典
标签: c# json serialization