.net core的web api中的Controller返回关联类时显示{}?

visual studio 2019 

.net Core 3.1

web api

 

输入如下代码

        [HttpGet("test")]
        public ActionResult TestGet() {
            var x = new SelectObject();
            x.Label = "test";
            x.Value = "123456";
 
            var y = new SelectObject2();
            y.name = "test2";
            y.obj = x;
 
            return Ok(x);
        }

可以正常返回 

{
  "value": "123456",
  "label": "test"
}

 

如果将代码返回的x对象改成y对象,就是有关联关系的对象,代码如下

        [HttpGet("test")]
        public ActionResult TestGet() {
            var x = new SelectObject();
            x.Label = "test";
            x.Value = "123456";
 
            var y = new SelectObject2();
            y.name = "test2";
            y.obj = x;
 
            return Ok(y);  // x改成了y
        }

则返回结果就变成了空对象

{}

 这是怎么回事,哪位大侠来解一下?

我猜测你的 SelectObject2 应该是这样定义的:

public class SelectObject2
{
    pubilc string name;
    public SelectObject1 obj;

    // others
}

而 SelectObject1 是这样定义的

public class SelectObject1
{
    public string Label{ get; set; }
    public string Value{ get; set; }

    // others
}

所以,为什么 return OK() 返回的是一个空对象的原因,应该是你的 SelectObject2 没有定义属性