Laden...

Forenbeiträge von J4m3s90 Ingesamt 17 Beiträge

10.02.2021 - 14:45 Uhr

Sehr gute Idee,
damit sind alle meine Fragen beantwortet.
Es hat alles so funktioniert wie es soll und ich kann auf alle Daten zugreifen 🙂.

Habe es mit :


 public Dictionary<string,Datum> TimeSeries { get; set; }

gemacht!

Vielen Dank an alle und sorry wenn ich zu wenig in der Dokumentation geschaut habe.
(*Sorry Abt 😉 *)

10.02.2021 - 13:35 Uhr

Aktuell mache ich das noch ja.
Wenn es nachher wirklich nicht so will, dann werde ich vermutlich doch mal Newtonsoft probieren.

Im Beispiel unten fehlt mir noch bei TimeSeries die ganzen anderen Werte.
Ansonsten bin ich schon sehr zufrieden 🙂, wollte hier nur wissen ob es dort direkt eine Variante gibt die ich benutzen kann, oder ob ich mir was zusammen bauen muss.


  public class Joa
    {

        [JsonPropertyName("Meta Data")]
        public Metadata Metadata { get; set; }
        [JsonPropertyName("Time Series (Daily)")]

        public TimeSeries TimeSeries { get; set; }
    }

    public class TimeSeries
    {
        //hier jetzt die einzelnen Daten als Member anlegen?
        [JsonPropertyName("2021-02-09")] // Da sich der Wert jeden Tag verändert, bzw. Tage es nachher in Minuten ablaufen soll und nicht Tagen, brauche ich hier noch eine alternative!
               Datum Datum { get; set; }
    }

    public class Datum
    {
        [JsonPropertyName("1. open")]
        public double Open { get; set; }
        [JsonPropertyName("2. high")]
        public double High { get; set; }
        [JsonPropertyName("3. low")]
        public double Low { get; set; }

    }
    public class Metadata
    {
        [JsonPropertyName("1. Information")]
        public string Information { get; set; }
        [JsonPropertyName("2. Symbol")]
        public string Symbol { get; set; }
        [JsonPropertyName("3. Last Refreshed")]
        public DateTime LastRefreshed { get; set; }   
    }

10.02.2021 - 13:18 Uhr

Deshalb verwende ich auch kein Newtonsoft!

10.02.2021 - 13:12 Uhr

Habe ich gesehen.
Habe aber auch oben schon geschrieben, dass ich gerne auf fremde Bibliotheken verzichten möchte.
Okay, dann mache ich die Auswertung einfach im String.

Danke euch für die Hilfe!

10.02.2021 - 13:02 Uhr

Halt Moment 😉

Ich glaube da ist jetzt was nicht richtig rüber gekommen. Habe den Text heute früh gelesen, aber den Sinn hinter dem zweiten Using nicht verstanden. Deshalb habe ich den eben kurz rein genommen.

Nach deinem Hinweis habe ich natürlich auf JsonPropertyName gewechsel und es ging, deshalb auch das Danke!
War nur ein Missverständis!

Eine Frage wäre noch offen. Wie lese ich jetzt die Time Series ein. Diese ändert sich ja täglich. Bevor ich es mit einer Auswertung vom String mache, gibt es hier auch eine Möglichkeit über JsonSerializer?

Grüße und vielen Dank für die bisherige Unterstützung !!

10.02.2021 - 12:45 Uhr

Tatsächlich hatte ich den Teil aus einem Beispiel noch im Programm.
Danke, hatte die Seite heute früh schon 2 mal gelesen!

10.02.2021 - 12:09 Uhr

Habe ich beide, aber der Fehler steht trotzdem noch an.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.IO;
using System.Text.Json;
using System.Text.Json.Serialization;

using System.Text.RegularExpressions;

namespace Test
{
    class Earthquake
    {
        public int mag { get; set; }
        public string place { get; set; }
        public long time { get; set; }

        public List<string> type { get; set; }
    }
    public class Joa
    {
        
   
        public string BindingType { get; set; }
        [JsonProperty("Meta Data")]
        public Metadata Metadata { get; set; }
    }
    public class Metadata
    {
        public string Information { get; set; }
        public string Symbol { get; set; }
        public DateTime LastRefreshed { get; set; }
        public string Interval { get; set; }
        
    }
    class Program
    {
        static readonly HttpClient client = new HttpClient();
        static void Main(string[] args)
        {
            Task task = Main();
            while (true)
            {

            }
        }
        static async Task Main()
        {
            HttpResponseMessage response = await client.GetAsync("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo");
            response.EnsureSuccessStatusCode();

            string responseBody = await client.GetStringAsync("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo");
            Console.WriteLine(responseBody);
            var options = new JsonSerializerOptions(JsonSerializerDefaults.Web);
            var joa = JsonSerializer.Deserialize<Joa>(responseBody, options);


        }
    }
}

10.02.2021 - 11:59 Uhr

Hey JimStark,

das hatte ich auch schon gesehen, allerdings sagt mir hier mein VS, dass JsonProperty keine Attributklasse ist.

10.02.2021 - 10:30 Uhr

Was mache ich denn bei Name mit einen Leerzeichen dazwischen?


    "Meta Data": {
        "1. Information": "Heavy",
        "2. Symbol": "Paul",
        "3. Last Hit": "2021-02-09 19:55:00",
        "4. Output Size": "Compact",

    },

Danke auch für den Hinweis auf das Git Projekt , allerdings wollte ich es lieber mit den Standard Funktionsumfang erstellen.
Schaue es mir aber trotzdem an.

10.02.2021 - 09:48 Uhr

Danke dir, probiere ich nachher gleich aus.
Mir ging es auch nicht darum, dass jemand mir alles erstellt.
Brauchte nur einen Denkanstoß!

Danke dir!

10.02.2021 - 08:59 Uhr

Hallo zusammen,

ich hoffe, ich bin im richtigen Bereich gelandet.
Ich möchte eine JSON string als auswertbares Objekt in meinem Programm einfügen.

Das Problem ist, dass ich nur den ersten Wert bekomme und nicht die restlichen.


{"type":"FeatureCollection","metadata":
{"generated":1612941799000,
"url":"https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.geojson","title":"USGS Significant Earthquakes, Past Month","status":200,"api":"1.10.3","count":13},"features":[{"type":"Feature","properties":
{"mag":6.3,"place":"Bismarck Sea","time":1612676752249,"updated":1612850520358,"tz":null,
"url":"https://earthquake.usgs.gov/earthquakes/eventpage/us6000dfad",
"detail":"https://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/us6000dfad.geojson",
"felt":1,"cdi":7.2,"mmi":4.081,"alert":"green","status":"reviewed","tsunami":0,
"sig":611,"net":"us",
"code":"6000dfad","ids":",us6000dfad,","sources":",us,",
"types":",dyfi,ground-failure,losspager,moment-tensor,origin,phase-data,shakemap,","nst":null,"dmin":1.801,"rms":0.87,"gap":43,"magType":"mww",
"type":"earthquake","title":"M 6.3 - Bismarck Sea"},"geometry":{"type":"Point","coordinates":[146.0591,-3.2929,10]},"id":"us6000dfad"},

{"type":"Feature","properties":{"mag":6,"place":"0 km WSW of Bansalan, Philippines","time":1612671776507,"updated":1612845102813,"tz":null,
"url":"https://earthquake.usgs.gov/earthquakes/eventpage/us6000df9r",
"detail":"https://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/us6000df9r.geojson",
"felt":53,"cdi":8.7,"mmi":6.938,"alert":"green","status":"reviewed","tsunami":0,"sig":600,
"net":"us","code":"6000df9r","ids":",us6000df9r,","sources":",us,","types":",dyfi,ground-failure,losspager,moment-tensor,origin,phase-data,shakemap,","nst":null,"dmin":0.467,"rms":1.38,"gap":37,"magType":"mww","type":"earthquake",
"title":"M 6.0 - 0 km WSW of Bansalan, Philippines"},"geometry":{"type":"Point","coordinates":[125.2056,6.7833,15.55]},"id":"us6000df9r"},

{"type":"Feature","properties":{"mag":6.7,"place":"West Chile Rise",
"time":1612329824293,"updated":1612416513747,"tz":null,
"url":"https://earthquake.usgs.gov/earthquakes/eventpage/us6000de34",
"detail":"https://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/us6000de34.geojson",
"felt":3,"cdi":3.8,"mmi":0,"alert":"green","status":"reviewed","tsunami":1,"sig":692,"net":"us","code":"6000de34",
"ids":",us6000de34,pt21034001,at00qnxtnq,","sources":",us,pt,at,","types":",dyfi,impact-link,losspager,moment-tensor,origin,phase-data,shakemap,","nst":null,"dmin":13.422,"rms":1.07,"gap":70,"magType":"mww","type":"earthquake",
"title":"M 6.7 - West Chile Rise"},"geometry":{"type":"Point","coordinates":[-97.6645,-36.1899,10]},"id":"us6000de34"},


Ansich möchte ich auf die properties zugreifen, habe aber aktuell schon Probleme überhaupt eine Liste zu bekommen mit allen type Werten.

Hatte am Anfang noch public string type zu stehen aber habe nur einen Wert bekommen, bei einer List gibt es eine Exception.
Hat jemand eine Idee wo der Fehler liegt?

Grüße Rob


  class Earthquake
    {
        public int mag { get; set; }
        public string place { get; set; }
        public long time { get; set; }

        public List<string> type { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest request = WebRequest.Create("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.geojson");
            WebResponse response = request.GetResponse();

            using (Stream dataStream = response.GetResponseStream())
            {
                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                string responseFromServer = reader.ReadToEnd();
                // Display the content.
                Console.WriteLine(responseFromServer);

                var options = new JsonSerializerOptions(JsonSerializerDefaults.Web);
                var earthquake = JsonSerializer.Deserialize<Earthquake>(responseFromServer, options);
                
                }
        }
    }

19.01.2021 - 15:22 Uhr

Perfekt, danke!
Jetzt habe ich es für zukünftige Projekte verstanden.
Habe leider nichts hilfreiches gefunden. Es wurde nirgends erwähnt, wie ich alle Elemente einer XML suche und dann dort jeweils nach einem Attribute suche.

Danke dir Abt!

19.01.2021 - 15:04 Uhr

Danke, ich werde mir das gleich anschauen, mit dem Stack hatte ich nicht ganz verstanden in der Doc aber werde es noch mal suchen.

Und ansonsten seh ich den Sinn nicht, wieso Du die Console-Commands mit in die Methode haust.

Die Console-Commands gibt es nachher nicht mehr. Ich schreibe mir nur den Wert des Attributes in eine Variable und arbeite dann außerhalb damit weiter. War nur für mich die Kontrolle ob es funktioniert.
Ich durchsuche die XML Datei nach dem Attribute ( dies entspricht einem Zähler ) sobald ich den habe, kann die Funktion beendet werden. Das Attribute gibt es auch nur ein mal, ich weiß nur nicht wo.

19.01.2021 - 14:34 Uhr

Hallo,
vielen Dank für die schnelle Antwort.
Habe das mal probiert so umzusetzen.

   
 public static void Main(string[] args)
        {
            XDocument doc = XDocument.Load("Message.xml");
            IEnumerable<XElement> node = doc.Elements();
            SearchForAttribute(node);
            Console.ReadLine();
        }
       public static void SearchForAttribute(IEnumerable<XElement> Elements)
        {
            foreach (var Element in Elements)
            {
                if(Element.Attribute("counter") != null)
                {
                    Console.WriteLine(Element.Attribute("counter").Value);
                }
                Console.WriteLine(Element.Name);
                if (Element.HasElements)
                {
                    SearchForAttribute(Element.Elements());
                }
            }
        }

Gibt es hier evtl. noch Verbesserungen oder Möglichkeiten Ressourcen zu schonen?

19.01.2021 - 11:05 Uhr

verwendetes Datenbanksystem: XML

Hallo zusammen,

folgende XML sei gegeben:


<Test>
   <REQUEST1 counter="77"  />
   <REQUEST2 counter="22"  />
   <REQUEST3 counter="33"  />
   <child1> 
		<REQUEST4 counter="44"  />   
   </child1>
</Test>

Ich schaffe es nicht alle Attribute mit dem Namen Counter auszulesen.
Die eingelesene XML Datei ändert sich bei jedem Aufruf, die Verschachtelungstiefe ist Variabel.
Wie schaffe ich es, alle Werte der Attribute auszulesen?