Ankündigung

Einklappen
Keine Ankündigung bisher.

JSON URL in PHP Werte in Variable speichern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von JNPANZER Beitrag anzeigen
    Die JSON Datei lasse ich ausgeben.

    HTML-Code:
    array(2) {
    ["data"]=>
    array(1) {
    ["09362"]=>
    array(14) {
    ["ags"]=>
    string(5) "09362"
    ["name"]=>
    string(10) "Regensburg"
    ["county"]=>
    string(13) "SK Regensburg"
    ["state"]=>
    string(6) "Bayern"
    ["population"]=>
    int(153094)
    ["cases"]=>
    int(6935)
    ["deaths"]=>
    int(82)
    ["casesPerWeek"]=>
    int(40)
    ["deathsPerWeek"]=>
    int(0)
    ["stateAbbreviation"]=>
    string(2) "BY"
    ["recovered"]=>
    int(6733)
    ["weekIncidence"]=>
    float(26.127738513593)
    ["casesPer100k"]=>
    float(4529.8966647942)
    ["delta"]=>
    array(3) {
    ["cases"]=>
    int(5)
    ["deaths"]=>
    int(0)
    ["recovered"]=>
    int(3)
    }
    }
    }
    ["meta"]=>
    array(5) {
    ["source"]=>
    string(20) "Robert Koch-Institut"
    ["contact"]=>
    string(35) "Marlon Lueckert (m.lueckert@me.com)"
    ["info"]=>
    string(42) "https://github.com/marlon360/rki-covid-api"
    ["lastUpdate"]=>
    string(24) "2021-06-06T00:00:00.000Z"
    ["lastCheckedForUpdate"]=>
    string(24) "2021-06-06T10:21:54.526Z"
    }
    }
    
    Ist das überhaupt ein valides JSON? Also mit einer Zahl als key?
    Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

    Kommentar


    • #17
      "09362" ist ein String und keine Zahl.

      Kommentar


      • #18
        Zitat von hellbringer Beitrag anzeigen
        "09362" ist ein String und keine Zahl.
        Trotzdem käme ich nie auf die Idee ein JSON ala

        PHP-Code:
        {„01234“:“Test“
        Zu erstellen, alleine weil man daraus kein object parsen kann, was dann zu dieser super gut zu lesenden Syntax

        PHP-Code:
        $data[][][„01234“
        statt einfach

        PHP-Code:
        $data->->->key 
        führt

        Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

        Kommentar


        • #19
          Zitat von Thallius Beitrag anzeigen
          Trotzdem käme ich nie auf die Idee ein JSON ala

          PHP-Code:
          {„01234“:“Test“
          Zu erstellen, alleine weil man daraus kein object parsen kann, was dann zu dieser super gut zu lesenden Syntax

          PHP-Code:
          $data[][][„01234“
          statt einfach

          PHP-Code:
          $data->->->key 
          führt
          Derjenige, der die JSON-Daten erstellt hat, dem wird PHP wohl ziemlich egal sein.

          Kommentar


          • #20
            Zitat von hellbringer Beitrag anzeigen

            Derjenige, der die JSON-Daten erstellt hat, dem wird PHP wohl ziemlich egal sein.
            Das ist ja nicht nur in PHP so sondern in jeder object-orientierten Sprache. Egal ob du nun Java, JavaScript, c# oder was auch immer nimmst um das JSON object zu verarbeiten. Überall bist du mit dem Schrott am ars....
            Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

            Kommentar


            • #21
              Zitat von Thallius Beitrag anzeigen
              Das ist ja nicht nur in PHP so sondern in jeder object-orientierten Sprache. Egal ob du nun Java, JavaScript, c# oder was auch immer nimmst um das JSON object zu verarbeiten. Überall bist du mit dem Schrott am ars....
              Nein, das Problem hat wohl nur PHP. Denn bei anderen Sprachen greift man nicht so auf JSON-Werte zu.

              C#:
              Code:
              var json = "{\"0123\":\"Foo\",\"xyz\":\"Bar\"}";
              
              var obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
              Console.WriteLine(obj["0123"]); // Foo
              Console.WriteLine(obj["xyz"]); // Bar
              JavaScript:
              Code:
              const json = "{\"0123\":\"Foo\",\"xyz\":\"Bar\"}";
              
              const obj = JSON.parse(json);
              console.log(obj["0123"]); // Foo
              console.log(obj["xyz"]); // Bar
              Wobei in PHP gäbe es sogar eine Möglichkeit dafür. Schaut etwas komisch aus, aber funktioniert:
              Code:
              $json = "{\"0123\":\"Foo\",\"xyz\":\"Bar\"}";
              
              $obj = json_decode($json);
              echo $obj->{"0123"}; // Foo
              echo $obj->xyz; // Bar

              Kommentar


              • #22
                Zitat von hellbringer Beitrag anzeigen

                Nein, das Problem hat wohl nur PHP. Denn bei anderen Sprachen greift man nicht so auf JSON-Werte zu.
                Wie kommst du darauf?

                PHP-Code:
                let object JSON.parse(JSON);
                console.log(object.xxx.xxx.xxx); 
                Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

                Kommentar


                • #23
                  Ich finde du versuchst hier ein Problem zu konstruieren, das nicht existiert. Es ist durchaus üblich, dass man ein JSON-Object als Dictionary verwendet. Und ein Dictionary-Key kann nun mal auch Ziffern enthalten. Nur weil das für dich komisch ist, heißt das nicht, dass das keinen Sinn haben kann. Ein möglicher Anwendungsfall ist z.B. ein Dictionary Postleitzahl -> Ortsnamen:

                  Code:
                  {
                      "01067": [
                          "Friedrichstadt",
                          "Innere Altstadt",
                          "Wilsdruffer Vorstadt/Seevorstadt-West"
                      ],
                      "01069": [
                          "Innere Altstadt",
                          "Pirnaische Vorstadt",
                          "Räcknitz/Zschertnitz",
                          "Seevorstadt-Ost/Großer Garten",
                          "Südvorstadt-Ost",
                          "Südvorstadt-West",
                          "Wilsdruffer Vorstadt/Seevorstadt-West"
                      ]
                  }

                  Kommentar


                  • #24
                    Zitat von hellbringer Beitrag anzeigen
                    Nein, das Problem hat wohl nur PHP. Denn bei anderen Sprachen greift man nicht so auf JSON-Werte zu.
                    Du hast zwar jetzt nicht ganz unrecht, aber wer kann deserialisiert JSON-Daten in vordefinierte Objekt-Strukturen. Und ich glaube, dass das gerade in C# das ultimative Ziel für die meisten Entwickler sein dürfte.
                    https://docs.microsoft.com/de-de/dot...xt-json-how-to

                    Zitat von hellbringer Beitrag anzeigen
                    Code:
                    {
                        "01067": [
                            "Friedrichstadt",
                            "Innere Altstadt",
                            "Wilsdruffer Vorstadt/Seevorstadt-West"
                        ],
                        "01069": [
                            "Innere Altstadt",
                            "Pirnaische Vorstadt",
                            "Räcknitz/Zschertnitz",
                            "Seevorstadt-Ost/Großer Garten",
                            "Südvorstadt-Ost",
                            "Südvorstadt-West",
                            "Wilsdruffer Vorstadt/Seevorstadt-West"
                        ]
                    }
                    Es gibt Daten und es gibt Daten...

                    Kommentar


                    • #25
                      Zitat von rkr Beitrag anzeigen
                      Du hast zwar jetzt nicht ganz unrecht, aber wer kann deserialisiert JSON-Daten in vordefinierte Objekt-Strukturen. Und ich glaube, dass das gerade in C# das ultimative Ziel für die meisten Entwickler sein dürfte.
                      Und Dictionaries sind durchaus Objekt-Strukturen, die häufig verwendet werden. Warum diese also nicht mit JSON abbilden? Nur weil der eine andere PHP-Programmierer seine Befindlichkeiten damit hat? Pech gehabt, sag ich da nur. Es dreht sich nicht alles um PHP.

                      Zitat von rkr Beitrag anzeigen
                      Es gibt Daten und es gibt Daten...
                      Und es gibt Programmierer und Programmierer.

                      Kommentar


                      • #26
                        Zitat von hellbringer Beitrag anzeigen
                        Und Dictionaries sind durchaus Objekt-Strukturen, die häufig verwendet werden. Warum diese also nicht mit JSON abbilden? Nur weil der eine andere PHP-Programmierer seine Befindlichkeiten damit hat?
                        Ich meinte eher, dass ich C# oder Kotlin eher ungerne auf statische Typen verzichten würde, nur weil die Daten komisch sind.
                        Ich würde dann eher einen XYZProvider schreiben, der die Daten wieder in statischen Strukturen ausgibt. Also im Prinzip so:

                        PHP-Code:
                        @Serializable
                        data 
                        class ZipCodeCities(val zipCodeStringval cities: List<String>)

                        val zipCodeCitiesDecoder = { jsonPloerreString ->
                            
                        Json.decodeFromString<Map<String, List<String>>>(jsonPloerre)
                                .
                        mapKeys entry -> ZipCodeCities(zipCode entry.keycities entry.value) }
                        }

                        zipCodeCitiesDecoder("""
                            {
                                "
                        01067": [
                                    "
                        Friedrichstadt",
                                    "
                        Innere Altstadt",
                                    "
                        Wilsdruffer Vorstadt/Seevorstadt-West"
                                ],
                                "
                        01069": [
                                    "
                        Innere Altstadt",
                                    "
                        Pirnaische Vorstadt",
                                    "
                        Räcknitz/Zschertnitz",
                                    "
                        Seevorstadt-Ost/Großer Garten",
                                    "
                        Südvorstadt-Ost",
                                    "
                        Südvorstadt-West",
                                    "
                        Wilsdruffer Vorstadt/Seevorstadt-West"
                                ]
                            }
                        """
                        ).forEach { println(it) } 
                        Ich habe hier quasi das gleiche Problem wie in PHP: Weil die Daten ungeschickt formatiert sind, muss ich mir einen eigenen Deserializer schreiben. Dictionaries weiter in meine Applikation reinschleppen als unbedingt nötig, mache ich da eher ungern.

                        Kommentar

                        Lädt...
                        X