Can you have a property name containing a dash

后端 未结 3 1522
自闭症患者
自闭症患者 2020-11-27 06:27

Is it possible to create an object with a property name that contains a dash character?

I am creating an anonymous object so that I can serialize it to Json using Js

相关标签:
3条回答
  • 2020-11-27 07:01

    Not in c#, no. However most serializers allow you to customise this - often via attributes. IIRC with JSON.NET you want [JsonProperty("starts-with")] to specify the name. However you can't use attributes on anonymous types, so you may need to define a class with the properties (and attributes) the you desire.

    0 讨论(0)
  • 2020-11-27 07:14

    Unfortunately, that's not possible, because the language would not be able to differentiate the two following expressions:

    condition.starts-with;    // Read "starts-with" property.
    condition.starts - with;  // Read "starts" property and subtract "with" variable.
    
    0 讨论(0)
  • 2020-11-27 07:20

    You can't do this with anonymous objects; field names must be valid identifiers. You could instead use a Dictionary, which Json.Net should serialise just as easily as an anonymous object:

    var document = new {
        conditions = new Dictionary<string, string>() {
            { "acl", "public-read" },
            { "bucket", "s3-bucketname" },
            { "starts-with", "test/path" }
        }
    };
    
    0 讨论(0)
提交回复
热议问题