首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >您是否可以使用包含破折号的属性名称

您是否可以使用包含破折号的属性名称
EN

Stack Overflow用户
提问于 2011-04-24 23:58:56
回答 3查看 18.5K关注 0票数 29

是否可以使用包含破折号字符的属性名称创建对象?

我正在创建一个匿名对象,这样我就可以使用Json.Net将它序列化为Json,并且我需要的一个属性包含一个'-‘破折号字符。

我想要的一个例子是:

代码语言:javascript
复制
var document =  {
    condtions = new {
        acl = "public-read",
        bucket = "s3-bucketname",
        starts-with = "test/path"
    }
};

我知道我可以在创建对象时用下划线替换破折号,然后在序列化的字符串中替换它们,但是我想知道在语言中是否有一种方法可以在没有这种解决方法的情况下做到这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-25 00:03:53

您不能对匿名对象执行此操作;字段名必须是有效的标识符。相反,您可以使用字典,Json.Net应该像序列化匿名对象一样轻松地序列化字典:

代码语言:javascript
复制
var document = new {
    conditions = new Dictionary<string, string>() {
        { "acl", "public-read" },
        { "bucket", "s3-bucketname" },
        { "starts-with", "test/path" }
    }
};
票数 39
EN

Stack Overflow用户

发布于 2011-04-25 00:02:28

不是在c#,不是。但是,大多数序列化程序都允许您对此进行自定义--通常是通过属性。IIRC如果使用JSON.NET,您希望[JsonProperty("starts-with")]指定名称。但是,您不能在匿名类型上使用属性,因此您可能需要定义一个具有所需属性(和属性)的类。

票数 27
EN

Stack Overflow用户

发布于 2011-04-25 00:03:58

不幸的是,这是不可能的,因为语言将无法区分以下两个表达式:

代码语言:javascript
复制
condition.starts-with;    // Read "starts-with" property.
condition.starts - with;  // Read "starts" property and subtract "with" variable.
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5771577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档