我有一个看起来像这样的对象模型:

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

  [ScriptIgnore]
  public int3 {get;set;}
}

在我的代码中,我这样写:
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时,它看起来像这样:
"{\"int1\":31,\"int2\":5436}"

序列化程序为每个属性添加一个反斜杠。我尝试在类定义上方添加和删除[Serializable]属性,但无济于事。

有什么建议为什么会这样吗?

谢谢。

最佳答案

那应该是正确的。将JSON发送回浏览器时,所有属性名称都必须用引号引起来。您看到的反斜杠是Visual Studio在查看字符串时将其转义(希望您在看到此内容时没有提及)。

如果您实际上是通过网络发送回来的数据,它应该会以

{"int1": 31, "int2":5436}

这是正确的JSON表示法。

有关JSON表示法的示例,请参见Wikipedia

09-08 10:52