I’m trying to get the name:value pair from a Json-file which look like this:
[
{
"SEK_per_kWh": 0.0584,
"EUR_per_kWh": 0.005,
"EXR": 11.680045,
"time_start": "2024-05-11T00:00:00+02:00",
"time_end": "2024-05-11T01:00:00+02:00"
},
{
"SEK_per_kWh": 0.14869,
"EUR_per_kWh": 0.01273,
"EXR": 11.680045,
"time_start": "2024-05-11T01:00:00+02:00",
"time_end": "2024-05-11T02:00:00+02:00"
},
{
...
}
]
In my code:
using (WebClient web = new WebClient())
{
string year = txt_year.Text;
string month = txt_month.Text;
string day = txt_day.Text;
string priceClass = txt_priceClass.Text;
string URL = string.Format("https://www.elprisetjustnu.se/api/v1/prices/{0}/{1}-{2}_{3}.json", year, month, day, priceClass);
var json = web.DownloadString(URL);
//var elInfo = JsonConvert.DeserializeObject<JArray>(json);
var elObject = JToken.Parse(json);
var elArray = elObject.Children<JProperty>().FirstOrDefault(x => x.Name == "SEK_per_kWh").Value;
foreach (var item in elArray.Children())
{
var itemProperties = item.Children<JProperty>();
var myElement = itemProperties.FirstOrDefault(x => x.Name == "SEK_per_kWh");
var myElementValue = myElement.Value; ////This is a JValue type
txt_answer.Text = myElementValue.ToString();
}
this row:
var elArray = elObject.Children<JProperty>().FirstOrDefault(x => x.Name == "SEK_per_kWh").Value;
throws:
System.NullReferenceException: ‘Objektreferensen har inte angetts till en instans av ett objekt.’
Why is this row null, does it has to do with
var elArray
not being a array or something…?
I have tried a lot of other code but hadn’t got it to work.
var elObject = JToken.Parse(json);
var elArray = new JArray();
foreach (JProperty prop in elObject)
{
elArray.Add($"{prop.Name}:{prop.Value}");
}
txt_answer.Text = elArray.ToString();
This code throws:
System.InvalidCastException: ‘Det gick inte att omvandla ett objekt av typen Newtonsoft.Json.Linq.JObject till typen Newtonsoft.Json.Linq.JProperty.’
at this :
foreach (JProperty prop in elObject)
Seems like prop is null here.