【发布时间】:2018-09-01 20:36:23
【问题描述】:
我已经用带有引号的对象序列化 JSON,如下所示:
var bla = [
{
"label": "person",
"id": "1",
"data": "bla means: \"lala\""
}
];
我知道它在服务器端的外观。但是当我在浏览器中调试它时,我看到我收到了错误,因为它如下所示:
var bla = [
{
"label": "person",
"id": "1",
"data": "bla means: "lala""
}
];
还有我的错误:
未捕获的语法错误:JSON 中第 25 位的意外标记 l JSON.parse()
我读到 JSON 应该能识别 \" https://www.json.org/
任何想法我应该在哪里更正它?在我序列化对象时在服务器端还是在客户端使用 JavaScript?
编辑:
在服务器端,我使用 C# 库 "System.Web.Script.Serialization"
要序列化的对象:
List<SomeObject> someObject= new List<SomeObject>();
SomeObject bla1 = new SomeObject();
bla1.id = "1";
bla1.label = "person";
bla1.label = "bla means: \"lala\"";
someObject.Add(bla1);
var bla = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(someObject);
摘要
我修复了服务器端的序列化字符串,因为我使用了无法操作这些对象的 API。
var bla = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(someObject).Replace("\\\"", "\\\\\\\"");
【问题讨论】:
-
这可能是服务器端的问题。您应该使用标准 JSON 库,而不是尝试自己序列化。
-
但就像我在 json.org 上读到的那样,它应该认识到 \" 标志并且不应该有问题。但另一方面,没有机会在字符串中使用引号?
-
当您在带有嵌入引号的字符串上使用
console.log()时,它不会显示将其作为文字或 JSON 输入所需的反斜杠。 -
发布创建 JSON 的代码。
-
文档推荐使用 Json.NET 而不是 JavaScriptSerializer
标签: javascript c# json