我遇到了一个有趣的情况。
我正在使用BlockCypher API生成加密地址,而BlockCypher作为响应返回的是具有以下字段的Json对象:“address”,“public”和“private”。
这是我的代码:
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"]
或反序列化到现有类中以避免dynamic
,但我只是想知道是否有办法逃避这些关键字或其他一些解决方法
答案 0 :(得分:0)
你可以这样试试;
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