为什么json.net只显示s#arp EntityWithTypedId类?

时间:2012-09-11 17:52:48

标签: c# json.net s#arp-architecture

我在项目中使用较旧版本的Sharp arch,我正在尝试使用JSON.NET进行序列化。 JavascriptSerializer可以工作,但我更喜欢JSON.NET的首选项。

这是问题所在。出于某种原因,当我尝试序列化一个简单的Sharp对象时,我得到以下结果:

// my sharp object
[Serializable]
public class Contact : Entity
{
    public virtual string EmailAddress { get; set; }
}

...

// in sharp, this is what happens to Entity
[Serializable]
public abstract class Entity : EntityWithTypedId<int> {
    protected Entity();
}

// and then into EntityWithTypedId
[Serializable]
public abstract class EntityWithTypedId<IdT> : ValidatableObject, IEntityWithTypedId<IdT> {
    protected EntityWithTypedId();

    [JsonProperty]
    [XmlIgnore]
    public virtual IdT Id { get; protected set; }

    public override bool Equals(object obj);
    public override int GetHashCode();
    protected override IEnumerable<PropertyInfo> GetTypeSpecificSignatureProperties();
    public virtual bool IsTransient();
}

当我运行以下JSON转换时,我只返回{ "Id" : 0 }

Contact test = new Contact {
    EmailAddress = "test@test.com"
};
string result = JsonConvert.SerializeObject(test);

关于如何返回整个对象内容的任何想法?

1 个答案:

答案 0 :(得分:1)

S#arp Architecture中的BaseObject类将成员序列化设置为OptIn,已在2.0中删除。

您的选择是:

  • 更新Sharp Architecture 2.0
  • 使用其他json序列化程序,ServiceStack.Text非常棒。
  • 在删除属性的情况下重新编译Sharp Architecture 1.6
  • 将JsonProperty属性添加到要序列化的特定属性