无法使用Json.Net将certian json属性反序列化为c#属性

时间:2014-01-03 20:46:25

标签: c# json.net

我正在使用这个框架https://github.com/trydis/FIFA-Ultimate-Team-2014-Toolkit向我发出一些请求,但是一个方法在服务器更新后不再起作用

Task<Item> GetItemAsync(long resourceId);

这会尝试使用

发出请求
internal class ItemRequest : FutRequestBase, IFutRequest<Item>
{
    private readonly long _baseId;

    public ItemRequest(long resourceId)
    {
        _baseId = resourceId.CalculateBaseId();
    }

    public async Task<Item> PerformRequestAsync()
    {
        AddUserAgent();
        AddAcceptHeader("*/*");
        AddReferrerHeader(Resources.BaseShowoff);
        AddAcceptEncodingHeader();
        AddAcceptLanguageHeader();
        var itemResponseMessage = await HttpClient
            .GetAsync(string.Format(Resources.Item, _baseId))
            .ConfigureAwait(false);
        var itemWrapper = await Deserialize<ItemWrapper>(itemResponseMessage);

        return itemWrapper.Item;
    }
}

尝试使用

进行反序列化
var itemWrapper = await Deserialize<ItemWrapper>(itemResponseMessage);

ItemWrapper.cs是

public class ItemWrapper
{
   public Item Item { get; set; }
}

而Item.cs是https://github.com/trydis/FIFA-Ultimate-Team-2014-Toolkit/blob/master/UltimateTeam.Toolkit/Models/Item.cs?source=cc

我添加到Item.cs

public string Desc {get;set;}

我得到的错误是

  

“无法在'Item'类型的对象上找到成员'Desc'。路径   'Item.Desc',第1行,第16位。“

当它试图反序列化

  

“{\”Item \“:{\”Desc \“:\”Staff Gold Rare \“,\”Rating \“:\”90 \“,\”Rare \“:\”1 \“, \ “青铜\”:\ “24 \”,\ “银\”:\ “24 \”,\ “金\”:\ “28 \”,\ “的ItemType \”:\ “ContractStaff \”}}”

我无法理解为什么它不会将Desc映射到我的Item.Desc属性

1 个答案:

答案 0 :(得分:1)

从错误消息中,您听起来像是将Desc添加到ItemWrapper而不是Item。但是你的JSon将它作为项目的一部分。将Desc移到Item C#类,它应该可以工作。