C# – how zu verwenden, die ungültige Zeichen in den Namen einer Variablen

In C#, ich Baue eine Klasse (vereinfacht hier zur Diskussion Zwecke), die schließlich serialisiert in eine extern definierte JSON:

    { 
    "$schema": "http://example.com/person.json",
    "name": "John",
    "age": 86
    }

In meinem code würde ich so etwas wie:

public class Person
{
    public const string $schema= @"http://example.com/person.json";
    public string name {get;set; }
    public int age {get; set;}
}

 Person person = new Person();
 person.name = "John";
 person.age = 88;

 JavaScriptSerializer serializer = new JavaScriptSerializer();
 string json = serializer.Serialize(person);

In meinem code oben die $schema verursacht ein „Unerwartetes Zeichen‘ $ ‚ – Fehler. Gibt es eine Abhilfe?

InformationsquelleAutor Damon Brodie | 2016-01-18



2 Replies
  1. 12

    Bieten das Attribut [DataContract] zu Ihrem Person Klasse.

    Auch meinst du, um schema const?

    [DataContract]
    public class Person
    {
        [DataMember(Name = "$schema")]
        public string schema { get; set; }
        public string name { get; set; }
        public int age {get; set;}
    }
    • Sie brauchen, um schema in eine Immobilie. Serialisierung funktioniert nicht auf den Feldern, so weit ich mich erinnern kann.
    • Mithilfe der DataContract bedeuten, ich muss eine andere serializer? Ich habe nicht die $schema in meinem json-wenn ich nur meine Klasse „Person“ zu dem, was hier angegeben.
    • Angenommen, Sie sind mit System.Runtime.Serialization.Json keine. Aber Sie didn ‚ T angeben, was serializer, das Sie verwenden, so dass ich davon ausgegangen das hier. Sie können DataContractJsonSerializer.
    • Wenn Sie DataMember zusammen mit dem DataContract-Attribut, die Sie haben, zu schmücken alle Mitglieder, nicht nur die eine, die hatte ein Ungültiger name. Zumindest war dies der Fall .NET-CORE-2-Vorschau mit VS 2017 TC Vorschau 5. So JsonProperty das Problem gelöst, für mich, wie es hatte keine solchen Anforderungen. Ich könnte jetzt nur schmücken das Anwesen mit einem ungültigen Namen .
  2. 5

    Wenn mit JSON.NET Sie können die JsonProperty Attribut:

    public class Person {
        [JsonProperty(PropertyName = "$schema")]
        public string schema {get; set;} = @"lsjdhflsjkdf";
    
        public string name {get;set;}
    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.