我有一个从中接收数据的 API。该 API 无法控制其结构,我需要序列化和反序列化 JSON 输出以将数据映射到我的模型。
在使用命名属性很好地格式化 JSON 的情况下,一切都运行良好。
如果没有命名值而只有一个整数和字符串数组,您可以做什么?比如在位置
这是一个 JSON 示例:
{"id":"2160336","activation_date":"2013-08-01","expiration_date":"2013-08-29","title":"Practice Manager","locations":{"103":"Cambridge","107":"London"}}
我有这样的模型:
public class ItemResults
{
public int Id { get; set; }
public DateTime Activation_Date { get; set; }
public DateTime Expiration_Date{ get; set; }
public string Title { get; set; }
public Location Locations { get; set; }
}
public class Location
{
public int Id { get; set; }
public string value { get; set; }
}
我正在使用内置的 ajax 序列化进行映射:
protected T MapRawApiResponseTo<T>( string response )
{
if ( string.IsNullOrEmpty( response ) )
{
return default( T );
}
var serialize = new JavaScriptSerializer();
return serialize.Deserialize<T>( response );
}
var results = MapRawApiResponseTo<ItemResults>(rawApiResponse);
所以 ID 和所有其他属性都被拾取并映射,但我所做的一切似乎都无法映射位置。
非常感谢
最佳答案
public Dictionary<int,string> Locations { get; set; }
工作完成;你应该发现使用 Json.NET,至少,即
var result = JsonConvert.DeserializeObject<ItemResults>(json);
您在 result.Locations
中得到 2 个条目;特别是 result[103] = "Cambridge";
和 result[107] = "London";
关于c# - 序列化反序列化匿名子 JSON 属性以建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18233005/