【发布时间】:2019-03-08 21:58:20
【问题描述】:
C#,我有一个汽车类,在那个类中我有一个 vehicleTrim 字段。
我使用JsonConvert.SerializeObject 来序列化该类并且它没有转义单引号。
当我尝试通过window.localStorage.setItem 函数在网络中设置对象的值时,这会导致问题。
示例:
public class Automobile
{
public string vehicleTrim { get; set; }
}
var test = new Automobile()
{
vehicleTrim = "designer's package"
};
var serialized = JsonConvert.SerializeObject(test, Formatting.None);
// serialized output: {"vehicleTrim":"designer's package"}
// expected output : {"vehicleTrim":"designer\'s package"}
所以现在我想通过调用 this 将此 json 对象设置为我的 web 的本地存储
var jsSetScript = $"window.localStorage.setItem('automobile', '{serialized}');";
await Control.EvaluateJavascriptAsync(jsSetScript);
EvaluateJavascriptAsync 在尝试读取 json SyntaxError: Unexpected identifier 's'. Expected ')' to end an argument list. 时返回此错误
我用转义的单引号手动尝试了这个,很好。所以问题是如何让 serializedobject 方法转义单引号?
【问题讨论】:
-
字符串中的单引号字符是有效的 JSON,所以
JsonConvert没有必要也没有理由转义它。如果您打算按照您的方式将其嵌入到eval字符串中,您将不得不在序列化后自己手动转义它。 (即serialized.Replace("'", "\\'");) -
hmm i c 所以我将它嵌入到 eval 中的方式是粗略的。猜想我不得不手动逃离它。谢谢!
标签: c# json serialization