gpt4 book ai didi

c# - 序列化未引用的属性值

转载 作者:行者123 更新时间:2023-11-29 22:20:48 24 4
gpt4 key购买 nike

假设我有这个 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 进行 Javascript 和 HTML 数据绑定(bind)。因此我需要写这样的东西 - <div data-bind="something: 'value', event: funcName">...</div>

我需要单引号,这样它就不会弄乱我的 HTML 并且我不会引用属性名称,因为我的个人风格很常见并且在 Javascript 中非常好(我没有用它来进行数据交换).

我需要一些不带引号的值,以便 Knockout 知道它是对函数的引用,否则它会将其视为字符串。以及我在服务器上生成的函数的名称,以及其他属性和值。

我当然可以始终手动构建和连接 JSON,但我正在寻找一些自动方式。

谢谢!

最佳答案

(I know there are quicker ways, but I need the quoting char to be a single quote and unquoted names

抱歉,这不是有效的 JSON。在 JSON 中,所有成员都应该用双引号引起来(数字类型除外),并且不能有函数。 .NET 中没有会生成无效 JSON 的 JSON 序列化程序。如果您需要生成无效的 JSON,您将不得不使用字符串连接手动完成,甚至不要尝试使用序列化程序。

这是 grammar一个有效的 JSON 编码对象。你必须坚持下去。不要只将术语 JSON 用于任何 javascript 语法,因为 JSON 具有需要遵守的非常具体的规则。

关于c# - 序列化未引用的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com