Csharp/C#教程:返回空的Json对象分享


返回空的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); } 

你假设框架可以推断出getset设置私有变量name的值..它没有。

相反,将name设为公共属性,它应该工作:

 public class A { public string Name { get; set; } } A obj = new A() { Name = "Abc" }; /* ...etc... */ 

从框架的角度考虑这个问题。 它如何确定getset正在做什么? 他们是否访问相同的变量? 谁知道..毕竟它的运行时间。 这就是为什么方法无法按照您的假设进行序列化的原因。

在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"}}

你不应该命名方法GetSet – 甚至不是GetNameSetName ,因为如果我记得我的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

(0)
上一篇 2021年12月21日
下一篇 2021年12月21日

精彩推荐