Сериализатор JSON.Net, игнорирующий JsonProperty?

У меня есть следующий класс сущности:

public class FacebookComment : BaseEntity
{
    [BsonId(IdGenerator = typeof(ObjectIdGenerator))]
    [BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]
    [JsonProperty("_id")]
    public ObjectId Id { get; set; }

    public int? OriginalId { get; set; }
    public DateTime Date { get; set; }
    public string Message { get; set; }
    public string Sentiment { get; set; }
    public string Author { get; set; }
}

Когда этот объект сериализуется в JSON, я хотите, чтобы поле Id было записано как "_id": {...}. AFAIK, мне просто нужно было передать желаемое имя свойства в атрибут JsonProperty; и мне должно быть хорошо идти. Однако когда я вызываю JsonConvert.SerializeObject; похоже, он игнорирует мой атрибут и вместо этого отображает следующее:

{
    Author: "Author name",
    Date: "/Date(1321419600000-0500)/",
    DateCreated: "/Date(1323294923176-0500)/",
    Id: {
        CreationTime: "/Date(0)/",
        Increment: 0,
        Machine: 0,
        Pid: 0,
        Timestamp: 0
    },
    Message: "i like stuff",
    OriginalId: null,
    Sentiment: "Positive"
}

Как видите, поле Id отображается с неправильным именем поля.

Есть идеи? Работал над этой проблемой в течение часа; не могу понять, почему сериализатор, по-видимому, игнорирует мой JsonProperty.

Мы приветствуем любой конструктивный вклад.

20
задан Frank Rosario 7 December 2011 в 23:39
поделиться