json.net转义特殊字符

时间:2011-03-24 09:54:16

标签: json.net

对JSON有点新意,所以请原谅问题,但根据herehere找到的特殊字符列表,单引号(')字符应该被转义。 specification也将solidus(/)视为可逃避的角色。为了说明我正在使用文档示例(稍加修改)。

输入:

Product product = new Product();

product.Name = "O'Grady's Apples";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large", "X/Large" };

output = JsonConvert.SerializeObject(product, Formatting.Indented);

输出:

{    
"Name": "O'Grady's Apples",  
"Expiry": "\/Date(1230422400000+0000)\/",
"Price": 3.99,
"Sizes": ["Small","Medium","Large", "X/Large"]
}

我期望看到的是

{  
"Name": "O\'Grady\'s Apples",...  
"Sizes": ["Small","Medium","Large", "X\/Large"]  
}

这是打算吗?还是我误解了规格?

1 个答案:

答案 0 :(得分:3)

虽然可以在字符串中转义所有内容,但只需要转义一组非常有限的内容:

  

字符串的表示类似于C中使用的约定      编程语言家族。字符串的开头和结尾      引号。所有Unicode字符都可以放在      除了必须转义的字符之外的引号:      引号,反向实线和控制字符(U+0000      通过U+001F)。

因此,只有"\和不可打印的控件字符必须才能转义。