首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON.Net设置JsonProperty时不序列化吗?

JSON.Net设置JsonProperty时不序列化吗?
EN

Stack Overflow用户
提问于 2013-11-29 20:46:53
回答 1查看 3.4K关注 0票数 1

我正在使用最新版本的Newtonsoft Json.Net来序列化我的web服务返回的复杂类型。由于某些原因,如果我应用[JsonProperty]属性,这些字段就不会序列化:

代码语言:javascript
复制
    [DataContract]
[JsonObject(MemberSerialization = Newtonsoft.Json.MemberSerialization.OptIn)]
public class ScalarResult
{
    [JsonProperty(Order = 0)]
    public string QueryId { get; set; }

    [JsonProperty(Order = 1)]
    public float CurrentPeriodValue { get; set; }

    [JsonProperty(Order = 2)]
    public bool HasPriorValue { get; set; }

    [JsonProperty(Order = 3)]
    public float PriorPeriodValue { get; set; }

    [JsonProperty(Order = 4)]
    public float ChangeOverPrior { get; set; }

    [JsonProperty(Order = 5)]
    public float ChangeOverPriorPercent { get; set; }

这导致返回对象不足:

代码语言:javascript
复制
{
"SomethingElse": "why am I the only thing visible?"
}

如果我将[DataMember]添加到每个字段(根据Json.NET文档,这些字段是我不应该这么做 ),则字段将显示出来,但(Order = x)属性将被忽略,这使我相信Json.NET可能实际上并不在执行序列化:

代码语言:javascript
复制
[DataContract]
[JsonObject(MemberSerialization = Newtonsoft.Json.MemberSerialization.OptIn)]
public class ScalarResult
{
    [DataMember]
    [JsonProperty(Order = 0)]
    public string QueryId { get; set; }

    [DataMember]
    public string SomethingElse { get; set; }

    [DataMember]
    [JsonProperty(Order = 1)]
    public float CurrentPeriodValue { get; set; }

    [DataMember]
    [JsonProperty(Order = 2)]
    public bool HasPriorValue { get; set; }

    [DataMember]
    [JsonProperty(Order = 3)]
    public float PriorPeriodValue { get; set; }

    [DataMember]
    [JsonProperty(Order = 4)]
    public float ChangeOverPrior { get; set; }

    [DataMember]
    [JsonProperty(Order = 5)]
    public float ChangeOverPriorPercent { get; set; }

其结果是(错误的顺序):

代码语言:javascript
复制
{
"ChangeOverPrior": 8,
"ChangeOverPriorPercent": 0.25,
"CurrentPeriodValue": 40,
"HasPriorValue": true,
"PriorPeriodValue": 32,
"QueryId": "CitiesMonitored_count",
"SomethingElse": "why am I the only thing visible?"
}

对于如何验证Json.Net正在进行序列化有什么想法吗?如果是,为什么忽略(Order =)属性?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20293141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档