说我有这个C#字典:
Dictionary<string, object> Parameters { get; set; }
然后我把一些值放在
中Parameters["param1"] = "val1";
Parameters["param2"] = "val2";
最后我用
序列化它var serializer = new JsonSerializer();
var stringWriter = new StringWriter();
var writer = new JsonTextWriter(stringWriter);
writer.QuoteName = false;
writer.QuoteChar = '\'';
serializer.Serialize(writer, Parameters);
(我知道有更快的方法,但我需要引用字母为单引号和不带引号的名称。)
结果如预期:
{
param1: 'val1',
param2: 'val2'
}
但是如果我想要包含一个带有 未加引号的 值的属性,它可能代表一个函数或一个对象名称呢?例如,我如何得到这个结果:
{
param1: 'val1',
param2: 'val2',
funcReference: someFunctionName,
objName: valueWithoutQuotes
}
修改
由于我的JSON语法的一些回复说它无效,让我澄清为什么我需要不引用的东西:
我正在使用Knockoutjs for Javascript&amp; HTML数据绑定。
因此我需要写这样的东西 -
<div data-bind="something: 'value', event: funcName">...</div>
我需要单引号以便它不会弄乱我的HTML并且我不会引用属性名称,因为我的个人风格很常见并且在Javascript中非常好(我没有用它来进行数据交换) )。
我需要一些值不加引号,以便Knockout知道它是对函数的引用,否则它会将它视为字符串。 以及我在服务器上生成的函数的名称,以及其他属性和值。
我当然可以手动构建和连接JSON,但我正在寻找一些自动方式。
谢谢!
答案 0 :(得分:2)
(我知道有更快的方法,但我需要引用字符为a 单引号和不带引号的名称
抱歉,这不是有效的JSON。在JSON中,所有成员都应该是双引号(数字类型除外),你不能有函数。 .NET中没有JSON序列化程序会生成无效的JSON。如果您需要生成无效的JSON,则必须使用字符串连接手动完成,甚至不要尝试使用序列化程序。
这是有效JSON编码对象的grammar。你必须坚持下去。不要只使用术语 JSON 来表示任何javascript语法,因为JSON具有非常特殊的规则需要遵守。
答案 1 :(得分:0)
在上面添加我的评论,理想情况下应该是
{
"param1": "val1",
"param2": "val2",
"funcReference": "someFunctionName",
"objName": "valueWithoutQuotes"
}
作为答案发帖,因为我无法在评论中发布代码