2017-03-05 7 views
0

私は残りのAPIを使用してEureka登録サービスに.netコネクタを書きたいと思っています。以下のようなjson形式を求め、設定クラスからそのjsonを生成したいと考えています。 「securePort」のようなjsonのbeginnnigで$のような属性のようないくつかのプロパティを直列化する方法を見つけることができませんでした:{"$": "8443"、 "@enabled": "true"}、c#jsonは属性でシリアライズ

ユーレカのために必要な

JSON:期待

{ 
    "instance": { 
     "hostName": "WKS-SOF-L011", 
     "app": "com.automationrhapsody.eureka.app", 
     "vipAddress": "com.automationrhapsody.eureka.app", 
     "secureVipAddress": "com.automationrhapsody.eureka.app" 
     "ipAddr": "10.0.0.10", 
     "status": "STARTING", 
     "port": {"$": "8080", "@enabled": "true"}, 
     "securePort": {"$": "8443", "@enabled": "true"}, 
     "healthCheckUrl": "http://WKS-SOF-L011:8080/healthcheck", 
     "statusPageUrl": "http://WKS-SOF-L011:8080/status", 
     "homePageUrl": "http://WKS-SOF-L011:8080", 
     "dataCenterInfo": { 
      "@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo", 
      "name": "MyOwn" 
     }, 
    } 
} 

私のクラスのthatsのシリアル化した後、以下のJSONを生成する(私はnewtonsoft.jsonを使用):

public class Port 
{ 
    public string PortName { get; set; } 
    [JsonProperty("enabled")] 
    public bool Enabled { get; set; } 
} 

public class DataCenterInfo 
{ 
    [JsonProperty("class")] 
    public string Class { get; set; } 
    [JsonProperty("name")] 
    public string Name { get; set; } 
} 

public class EurekaRegisterParams 
{ 
    [JsonProperty("instanceId")] 
    public string InstanceId { get; set; } 
    [JsonProperty("hostName")] 
    public string HostName { get; set; } 
    [JsonProperty("app")] 
    public string App { get; set; } 
    [JsonProperty("ipAddr")] 
    public string IpAddr { get; set; } 
    [JsonProperty("status")] 
    public string Status { get; set; } 
    [JsonProperty("port")] 
    public Port Port { get; set; } 
    [JsonProperty("securePort")] 
    public Port SecurePort { get; set; } 
    [JsonProperty("countryId")] 
    public string CountryId { get; set; } 
    [JsonProperty("dataCenterInfo")] 
    public DataCenterInfo DataCenterInfo { get; set; } 
    [JsonProperty("homePageUrl")] 
    public string HomePageUrl { get; set; } 
    [JsonProperty("statusPageUrl")] 
    public string StatusPageUrl { get; set; } 
    [JsonProperty("healthCheckUrl")] 
    public string HealthCheckUrl { get; set; } 
} 
+0

'[JsonProperty(" $ ")]'を 'Port'エンティティの' PortName'プロパティに追加してみましたか? – Venky

答えて

1

あなたは解決策に非常に近いです。 JsonProperty属性を使用して、残りのプロパティで既に行ったようにジョブを実行できます。

public class Port 
{ 
    [JsonProperty("$")] 
    public string PortName { get; set; } 
    [JsonProperty("@enabled")] 
    public bool Enabled { get; set; } 
}