C#转义关键字
我遇到了一个有趣的情况 我正在使用BlockCypher API生成加密地址,BlockCypher作为响应返回的是一个Json对象,包含以下字段:“address”、“public”和“private” 这是我的代码:C#转义关键字,c#,json,C#,Json,我遇到了一个有趣的情况 我正在使用BlockCypher API生成加密地址,BlockCypher作为响应返回的是一个Json对象,包含以下字段:“address”、“public”和“private” 这是我的代码: HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync(endpoint); if (response.IsSuccessStatusCode) {
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(endpoint);
if (response.IsSuccessStatusCode)
{
string json = await response.Content.ReadAsStringAsync();
dynamic dynamicJson = JsonConvert.DeserializeObject(json);
return new MyAddress()
{
Address = (string)dynamicJson.address,
PublicKey = (string)dynamicJson.public,
PrivateKey = (string)dynamicJson.private
};
}
但是我遇到了问题,因为public
和private
是C#中的关键字:)
显然,有很多替代方法,例如使用
dynamicJson[“public”]
或反序列化到现有类中以避免动态
,但我只是想知道是否有办法避开这些关键字或其他解决方法
public class JsonObject
{
public string Address { get; set; }
[JsonProperty("public")]
public string PublicKey { get; set; }
[JsonProperty("private")]
public string PrivateKey { get; set; }
}
var jsonObject = JsonConvert.DeserializeObject<JsonObject>(json);
//jsonObject.PublicKey
公共类JsonObject
{
公共字符串地址{get;set;}
[JsonProperty(“公共”)]
公共字符串公钥{get;set;}
[JsonProperty(“私有”)]
公共字符串私钥{get;set;}
}
var jsonObject=JsonConvert.DeserializeObject(json);
//jsonObject.PublicKey
我认为没有其他方法可以逃避:多么糟糕的API。。。您应该创建自己的类并使用[JsonProperty(“name”)]
annotation@CamiloTerevintoAPI的错在哪里?你不能指望他们避开每一种语言中作为json密钥发明的每一个关键字。@代码有许多语言的public
和private
都是关键字,API的开发人员应该知道这一点,并使用更友好的名称