Десериализация json и перевод в LIST
Кто может подсказать как десериализовать данный json в юнити и желательно перевести его в List, ранее работал с json где 1 объект, а тут их много и что-то мне подсказывает что тут нужен Dictionary
Мой мозг дошёл до такого:
[System.Serializable]
public class CurrencyValue
{
public string code;
public string alphaCode;
public string numericCode;
public string name;
public int rate;
public string date;
public int inverseRate;
}
[System.Serializable]
public class ValueList
{
public List<CurrencyValue> = new List<CurrencyValue>();
}
Но я абсолютно не понимаю, как вывести данные из json такого формата в этот лист
{
"eur": {
"code": "EUR",
"alphaCode": "EUR",
"numericCode": "978",
"name": "Euro",
"rate": 0.9432588195335,
"date": "Wed, 4 Jan 2023 11:55:01 GMT",
"inverseRate": 1.0601544128626
},
"gbp": {
"code": "GBP",
"alphaCode": "GBP",
"numericCode": "826",
"name": "U.K. Pound Sterling",
"rate": 0.83020895749074,
"date": "Wed, 4 Jan 2023 11:55:01 GMT",
"inverseRate": 1.2045160329545
},
"jpy": {
"code": "JPY",
"alphaCode": "JPY",
"numericCode": "392",
"name": "Japanese Yen",
"rate": 130.50885010342,
"date": "Wed, 4 Jan 2023 11:55:01 GMT",
"inverseRate": 0.0076623156146695
}
}
Ответы (2 шт):
Автор решения: User12351259599491
→ Ссылка
Dictionary<string, CurrencyValue> ValueDictionary = new Dictionary<string, CurrencyValue>();
И нужно сменить тип с int на decimal public decimal inverseRate;
Автор решения: Александр
→ Ссылка
В общем всё оказалось проще чем думалось, спасибо @Qwer за подсказку. Теперь код выглядит так, кому нужно.
using UnityEngine;
using Newtonsoft.Json;
public class SomeClass : MonoBehaviour
{
public TextAsset json; //cюда физически пихаем jsonFile
private Dictionary<string,CurrencyValue> JsonValues;
string currency = "";
decimal rate = 0;
void Start()
{
JsonValues = JsonConvert.DeserializeObject<Dictionary<string,
CurrencyValue>>(json.text);
}
//забираем любое значение из словаря по ключу
void GetValue(string currencyIn)
{
Dictionary<string,CurrencyValue> JV = JsonValues;
foreach(var n in JV)
{
if(n.Key == currencyIn)
{
currency = n.Key;
rate = n.Value.rate;
}
}
}
}
[System.Serializable]
public class CurrencyValue
{
public string code;
public string alphaCode;
public string numericCode;
public string name;
public decimal rate;
public string date;
public decimal inverseRate;
}