1

初めて Web API 4 をいじって、MongoDb に接続する準備をしています。モデルを表すいくつかの単純なオブジェクトを定義しましたが、API の GET 要求からそれらのコレクションを返そうとすると、結果の JSON オブジェクトには 1 つのプロパティしか含まれていません。

public class Topic : Entity
{
    public string Name { get; set; }
    public List<Topic> Parents { get; set; }
    public List<Topic> Children { get; set; }
    public List<ContentNode> ContentNodes { get; set; }
}

public class ContentNode
{
    public enum ContentNodeType { VIDEO, TEXT, AUDIO };
    public ContentNodeType ContentType { get; set; }
    public string Url { get; set; }
    public List<int> Scores { get; set; }
    public List<Link> Links { get; set; }
    public List<string> Comments { get; set; }
}

public string Get()
    {
        List<Topic> topics = new List<Topic>();
        var programming = new Topic()
        {
            Id = "1",
            Name = "Programming"
        };

        var inheritanceVideo = new ContentNode() 
        {
            ContentType = ContentNode.ContentNodeType.VIDEO,
            Url = "http://youtube.com",
            Scores = new List<int>() {
                4, 4, 5
            },
            Comments = new List<string>() {
                "Great video about inheritance!"
            }
        };

        var oop = new Topic()
        {
            Id = "2",
            Name = "Object Oriented Programming",
            ContentNodes = new List<ContentNode>() {
                inheritanceVideo
            }
        };

        programming.Children.Add(oop);
        topics.Add(programming);
        string test = JsonConvert.SerializeObject(topics);
        return test;
    }

ここでは、JSON.Net ライブラリを使用してオブジェクトをシリアル化していますが、以前はデフォルトの JSON シリアライザーを使用していて、GET return がありましたIEnumerable<Topic>。どちらの場合も、返される JSON は次のとおりです。

"[{\"Id\":\"1\"}]"

XML に対するブラウザ リクエストは正常に機能します。JSON.Net のドキュメントによると、これらのクラスを JSON にシリアル化する際に問題があるようには見えません。これが機能しない理由について何か考えはありますか? すべてのメンバーに明示的な属性を適用する必要はないようです。

4

0 に答える 0