繁体   English   中英

使用来自REST API的JSON响应和非标准名称

[英]using JSON response from REST api with nonstandard names

{"balances-and-info":{"on_hold":[],"available":    {"USD":0.93033384},"usd_volume":"243.18","fee_bracket":    {"maker":"0.00","taker":"0.60"},"global_usd_volume":"0.09942900"}}

我有这个JSON响应,并且我试图将其存储在一个对象中,但是正如您所看到的,“ balances-and-info”不能用作变量名。 我一直在使用的方法是:

RestClient client = new RestClient("http://currency-api.appspot.com/api/");
RestRequest request = new RestRequest(url);

var response = client.Execute<Currency>(request);

Currency obj = response.Data;

显然,上课要容易得多

public class Currency
{
    public string rate { get; set; }
}

那么我该如何处理呢?

String.replace()带有余额和信息的余额和信息

在你的代码中

YourObject deserialized = parseResponse(obj.replace("balances-and-info", "balances_and_info"));

YourObject parseResponse(string response) {
    try
    {
        // https://www.nuget.org/packages/Newtonsoft.Json/ 
        // Json.NET
        YourObject ret = JsonConvert.DeserializeObject<YourObject>(response);
        return ret;
    }
    catch (JsonSerializationException)
    {
        // do something 
    }
    return null;
}

YourObject

使用http://json2csharp.com/并生成您的对象(复制响应字符串,将balances-and-info替换为balances_and_info并生成)

public class Available
{
    public double USD { get; set; }
}

public class FeeBracket
{
    public string maker { get; set; }
    public string taker { get; set; }
}

public class BalancesAndInfo
{
    public List<object> on_hold { get; set; }
    public Available available { get; set; }
    public string usd_volume { get; set; }
    public FeeBracket fee_bracket { get; set; }
    public string global_usd_volume { get; set; }
}

public class YourObject
{
    public BalancesAndInfo balances_and_info { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM