C# asp.net json序列化程序添加反斜杠\&引用;我的财产

C# asp.net json序列化程序添加反斜杠\&引用;我的财产,c#,asp.net,json,C#,Asp.net,Json,我有一个如下所示的对象模型: public class MyObjectModel { public int1 {get;set;} public int2 {get;set;} [ScriptIgnore] public int3 {get;set;} } "{\"int1\":31,\"int2\":5436}" 在我的代码中,我写了以下内容: MyObjectModel TheObject = new MyObjectModel(); TheObject = Lo

我有一个如下所示的对象模型:

public class MyObjectModel
{
  public int1 {get;set;}
  public int2 {get;set;}

  [ScriptIgnore]
  public int3 {get;set;}
}
"{\"int1\":31,\"int2\":5436}"
在我的代码中,我写了以下内容:

MyObjectModel TheObject  = new MyObjectModel();

TheObject = LoadFromQuery(); //populates the properties using a linq-to-sql query

JavaScriptSerializer MyObjectSerializer = new JavaScriptSerializer();

string TheObjectInJson = MyObjectSerializer.Serialize(TheObject);
当我查看json字符串TheObjectInJson时,结果如下所示:

public class MyObjectModel
{
  public int1 {get;set;}
  public int2 {get;set;}

  [ScriptIgnore]
  public int3 {get;set;}
}
"{\"int1\":31,\"int2\":5436}"
序列化程序向每个属性添加反斜杠。我尝试在类定义上方添加和删除[Serializable]属性,但没有成功

有什么建议可以解释为什么会发生这种情况吗


谢谢。

那应该是正确的。将JSON发送回浏览器时,所有属性名称必须用引号括起来。您看到的反斜杠是VisualStudio在查看字符串时转义字符串(我希望,您在看到这一点时没有提到)

如果你真的在电线上发送数据,它应该是

{"int1": 31, "int2":5436}
这是正确的JSON表示法


有关JSON表示法的示例,请参阅。

在控制器中,将对象的类型(不是字符串!)作为JsonResult返回,即:

[HttpGet]
        public JsonResult<MyObjectModel> GetMyObject()
        { 
            var theObject = LoadFromQuery(); //populates the properties (however)
            return Json(theObject);
        }
[HttpGet]
public JsonResult GetMyObject()
{ 
var theObject=LoadFromQuery();//填充属性(但是)
返回Json(对象);
}

好的,你说得对,当我将字符串放入文本中并查看页面上的内容时,我看到json数据格式正确。我正在查看VS调试器。嗨,真让人困惑!是的!你最终会习惯的。下次在调试器中查看字符串时,按放大镜旁边的向下箭头并选择“文本可视化工具”,它将正确显示。