Подобно этому вопросу, у меня есть класс с несколькими различными типами свойств, включая BsonDocument.
public class Report
{
[BsonId, JsonIgnore]
public ObjectId _id { get; set; }
public string name { get; set; }
[JsonIgnore]
public BsonDocument layout { get; set; }
[BsonIgnore, JsonProperty(PropertyName = "layout")]
public string layout2Json
{
get { return layout.ToJson(); }
}
}
Причина наличия BsonDocument в том, что свойство макета неструктурировано, и у меня не может быть строго типизированных подклассов. Теперь, когда ApiController возвращает этот класс, я получаю что-то вроде этого:
{
name: "...",
layout: "{type: "...", sth: "..."}"
}
Но мне нужно свойство макета как объект, а не строка.
Есть ли способ в JSON.NET подключить строку json, которая уже является действительной json, как объект, а не строку?
Следующие работы, но кажутся довольно расточительным:
[BsonIgnore, JsonProperty(PropertyName = "layout")]
public JObject layout2Json
{
get { return JObject.Parse(layout.ToJson()); }
}