返回空的Json对象
我试图在C#中返回一个Json对象。 我是MVC控制器的新手并且第一次使用Json,我返回这个对象,它是空的。
public class A { private string name; public void set(string data) { name = data; } public string get() { return name; } } public JsonResult Hello() { A obj = new A(); obj.set("Abc"); JavaScriptSerializer js = new JavaScriptSerializer(); string jsonVar = js.Serialize(obj); return Json(jsonVar, JsonRequestBehavior.AllowGet); }
你假设框架可以推断出get
和set
设置私有变量name
的值..它没有。
相反,将name
设为公共属性,它应该工作:
public class A { public string Name { get; set; } } A obj = new A() { Name = "Abc" }; /* ...etc... */
从框架的角度考虑这个问题。 它如何确定get
或set
正在做什么? 他们是否访问相同的变量? 谁知道..毕竟它的运行时间。 这就是为什么方法无法按照您的假设进行序列化的原因。
在C#中,我们可以自动创建(在C#3+中)的属性。
public class A { public string Name { get; set; } }
其次,您需要返回包装在新对象中的对象,以便JSON正确返回。 您不需要自己序列化对象(因为您可以将其作为ActionResult
返回)。
public JsonResult Hello() { A obj = new A(); obj.Name = "Abc"; return Json(new { obj }, JsonRequestBehavior.AllowGet); }
这将创建一个新的Json对象{"obj":{"Name":"Abc"}}
你不应该命名方法Get
和Set
– 甚至不是GetName
和SetName
,因为如果我记得我的C#读数正确,CLR按照惯例将“属性”转换为CIL代码(getter成为“get”方法,并且setter成为“set”方法)。 “正确”的方式是使用具有有意义名称的属性 – 您将在以后感谢自己:
上述就是C#学习教程:返回空的Json对象分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
private string _name; public string Name { get { return _name; } set { _name=value; } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/985675.html