将JSON数组反序列化为C#对象

时间:2018-01-31 09:29:35

标签: c# json serialization json.net deserialization

我真的需要帮助解决JSON问题。

这是我的JSON:https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD

这是我到目前为止的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;

public class StockManager : MonoBehaviour {

private string webString;

private CurrencyContainer container;

[SerializeField]private int currenciesToLoad;

void Start()
{
    StartCoroutine(GetText());
}

void Update()
{
    if (container != null) 
    {
        Debug.Log (container.Arr);
    } 
    else 
    {
        Debug.Log ("null");
    }
}

IEnumerator GetText()
{
    using (WWW www = new WWW("https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD"))
    {
        yield return www;

        if (www.error != null)
        {
            Debug.Log("Error is : " + www.error);
        }
        else
        {
            webString = "{ \"Arr\":" + www.text + "}";

                            container = JsonConvert.DeserializeObject<CurrencyContainer> (webString);

        }
    }       
}

[System.Serializable]
public class Datum
{
    public int time;
    public double close;
    public double high;
    public double low;
    public double open;
    public double volumefrom;
    public double volumeto;
}

[System.Serializable]
public class ConversionType
{
    public string type;
    public string conversionSymbol;
}

[System.Serializable]
public class Example
{
    public string Response;
    public int Type;
    public bool Aggregated;
    public IList<Datum> Data;
    public int TimeTo;
    public int TimeFrom;
    public bool FirstValueInArray;
    public ConversionType ConversionType;
}

[System.Serializable]
public class CurrencyContainer
{
    public Example[] Arr;
}

}

我得到的错误是:JsonSerializationException:无法将当前JSON对象(例如{&#34; name&#34;:&#34; value&#34;})反序列化为类型&#39; StockManager + Example [] &#39;因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。

我不知道如何修复,我们非常感谢任何帮助。 非常感谢。

1 个答案:

答案 0 :(得分:1)

您的对象结构中有“一级到多级”,因为给定的JSON仅在您的类型Example的“项目”上。请尝试以下方法:

var item = JsonConvert.DeserializeObject<Example>(www.text);

在行动中查看HERE