【问题标题】:Output a JSON property name with a dash using an anonymous object使用匿名对象输出带有破折号的 JSON 属性名称
【发布时间】:2018-11-21 04:00:29
【问题描述】:

我正在使用如下所示的第三方 API。它使用Json serializer 输出

public Output(string name, object value);

我必须将以下 json 字符串放在我的 C# 输出文件中

Output("somename", new {my-name : "somevalue"})

问题是 C# 不允许带有破折号 (-) 的标识符。我如何做到这一点?

尝试像下面这样输入原始值,但它会将back slash (\) 添加到文件输出中,这不是很好。

Output("somename", @"{""my-name"":""somevalue""}")

有什么想法吗?

【问题讨论】:

标签: c# .net json json.net


【解决方案1】:

由于您使用的是匿名对象,因此最简单的解决方法是创建一个Dictionary<string, string>

Output("somename", new Dictionary<string, string> { { "my-name", "somevalue" } });

许多 .Net JSON 序列化程序都支持将字典序列化为 JSON 对象,其中字典键映射到 JSON 属性名称,包括 甚至 ,当 UseSimpleDictionaryFormat = true 如上所述 @ 987654325@.

如果您有不同类型的值,并且在序列化期间使用支持任意多态的序列化程序(Json.NET 和 JavaScriptSerializer 可以),您可以使用 Dictionary&lt;string, object&gt;

Output("somename",
    new Dictionary<string, object>
    {
        { "my-name", "somevalue" },
        { "my-id", 101 },
        { "my-value", value },
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 2018-12-27
    • 2021-02-10
    • 1970-01-01
    • 2018-07-12
    • 2013-04-06
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多