假设我有这个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&HTML数据绑定。因此,我需要写这样的东西——<div data-bind="something: 'value', event: funcName">...</div>
我需要单引号,这样它就不会扰乱我的HTML,我也不会引用属性名称,因为我的个人风格非常常见,在Javascript中也很好(我不把它用于数据交换)。
我需要一些值被取消引号,这样Knockout就会知道它是对函数的引用,否则它会把它当作字符串。以及我在服务器上生成的函数的名称,以及其他属性和值。
当然,我总是可以手动构建和连接JSON,但我正在寻找一些自动的方法。
谢谢!
(我知道有更快的方法,但我需要引用的字符是单引号和无引号名称
很抱歉这不是有效的JSON。在JSON中,所有成员都应该是双引号(数字类型除外),并且不能有函数。中没有JSON序列化程序。NET将生成无效的JSON。如果您需要生成无效的JSON,则必须使用字符串串联手动生成,甚至不要尝试使用序列化程序。
以下是一个有效的JSON编码对象的语法。你必须坚持下去。不要只是用术语JSON来表示任何javascript语法,因为JSON有非常具体的规则需要遵守。
添加到我上面的评论中,理想情况下应该是
{
"param1": "val1",
"param2": "val2",
"funcReference": "someFunctionName",
"objName": "valueWithoutQuotes"
}
由于我不能在评论中发布代码,所以作为答案发布