使用不断变化的变量从 Json url 获取值

时间:2021-05-15 13:32:56

标签: c# json unity3d

我想从 BitZ api 获取任何加密货币的价格。 我有这样的代码:

string coinName;
string jsonURL = "https://apiv2.bitz.com/Market/coinRate?coins=" + coinName;

我会给变量 coinName 我想要的值,例如 coinName = "btc" 并且我想要 USDT 的价格 这里的问题是包含硬币名称的 Json 结构,如果对每个硬币都这样做,我最终会得到大量代码行,

    public class Btc
    {
        public string usdt { get; set; }
    }

    public class Data
    {
        public Btc btc { get; set; }
    }

    public class Root
    {
        public int status { get; set; }
        public string msg { get; set; }
        public Data data { get; set; }
        public int time { get; set; }
        public string microtime { get; set; }
        public string source { get; set; }
    }

与 Bittrex api 不同,例如使用来自统一存储的 JsonDotNet 资产更容易阅读和:

BittrexJsonUrl = "https://api.bittrex.com/api/v1.1/public/getticker?market=USDT-" + coinName;

然后我使用此代码获取数据:

private IEnumerator GetData()
    {

        /////bittrex
            UnityWebRequest request = UnityWebRequest.Get(BittrexJsonUrl);
            yield return request.SendWebRequest();
            if (request.error == null)
            {
                Bittrex_proccessJsonData(request.downloadHandler.text);
            }
            else
            {
                    Debug.Log("Something went wrong!!");
                }
}

private void Bittrex_proccessJsonData (string _url) {

    var _bittrexJsonData = JsonConvert.DeserializeObject<BittrexJsonData>(_url);

    bittrexPrice = _bittrexJsonData.result.Last;
}

这与 bittrex 的 Json 结构完美配合,因为它不包含硬币名称,我所做的只是更改 Json URL。 现在我想为 BitZ 做同样的事情,如果你有任何想法,请帮忙:) 提前谢谢你。

1 个答案:

答案 0 :(得分:1)

对于这种情况,您可以使用旧的 SimpleJson

在这里您不需要实现整个 c# 结构,而是通过它的 ID 逐个字段访问数据。你可以把它想象成一个嵌套的字典之类的东西。

只需使用项目中某处链接中的给定内容创建该文件,然后执行例如

var json = JSON.Parse(the_JSON_string);
var usdt = json["Data"]["bst"]["usdt"].AsFloat;        
相关问题