C#反序列化具有不同属性名称的JSON字符串

时间:2017-05-21 20:55:54

标签: c# json json.net deserialization

我无法将C#中的JSON字符串反序列化为一个对象,其属性名称与JSON字符串中的属性名称略有不同。这是我的代码:

using System.Collections.Generic;
using Newtonsoft.Json;

[JsonObject(MemberSerialization.OptIn)]
public class AuctionFilesList
{
    [JsonProperty("files")]
    public List<AuctionFile> Files { get; set; }
}

[JsonObject(MemberSerialization.OptIn)]
public class AuctionFile
{
    #region Properties
    [JsonProperty("url")]
    public string Url { get; set; }
    [JsonProperty("lastModified")]
    public long LastModified { get; set; }
    #endregion
}

string jsonResponse = "{\"files\":[{\"url\":\"http://auction-
api.com/auctions.json\",\"lastModified\":1495397839000}]}"

AuctionFilesList auctionFiles = JsonConvert.DeserializeObject<AuctionFilesList>(jsonResponse);

我没有错误,它只是无法反序列化到对象中。我已尝试添加序列化程序设置,但仍然失败:

JsonSerializerSettings jss = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
AuctionFilesList auctionFiles = JsonConvert.DeserializeObject<AuctionFilesList>(jsonResponse, jss);

我的类结构与json2csharp返回的内容一致,当我将对象的属性名称与JSON匹配时,它会起作用,所以要么我误解了JsonProperty的作用,要么以某种方式忽略它。

感谢任何帮助。

0 个答案:

没有答案