我有一个看起来像这样的对象模型:
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。