Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Frage zu Jsonata

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Frage zu Jsonata

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki Developer last edited by

      Hallo,

      bin neu mit Jsonata unterwegs und frage mich ob ich folgende Funktion dort abbilden kann:

      Ziel des ganzen ist es einen Definition zu schreiben, die mir die benötigten Daten aus dem Json fischt. sowas z.B. (ungetestet)

      const formatedKeys: { [key: string]: customFormatedKeysDef } = {
          dwdService: {
              starttime: '$fromMillis(properties.ONSET,"[H#1]:[M01]")',
              startdate: '$fromMillis(properties.ONSET,"[D01].[M01]")',
              endtime: '$fromMillis(properties.EXPIRES,"[H#1]:[M01]")',
              enddate: '$fromMillis(properties.EXPIRES,"[D01].[M01]")',
              dayofweek: '$fromMillis(properties.ONSET,"[F]")',
              headline: 'properties.HEADLINE',
              description: 'properties.DESCRIPTION',
              weathertext: '',
              ceiling: 'properties.CEILING * 0.3048', // max höhe
              altitude: 'properties.ALTITUDE * 0.3048', // min höhe
              warnlevelname: 'properties.SEVERITY',
              warnlevelnumber: '',
              warnlevelcolor: '', // RGB im Hexformat
              warntypename: 'properties.EC_GROUP',
              location: 'properties.AREADESC',
          },
      };
      

      gekürztes Beispiel Json

              {
                  "properties": {
                      "SEVERITY": "Moderate"
                  }
              }
      

      Darauf würde ich gerne diese Funktion abbilden:

          function getCapLevel(str) {
              const offset = 1;
              return [
                  `minor`,
                  `moderate`,
                  `severe`,
                  `extreme`
              ].indexOf(str.toLowerCase()) + offset;
          }
      

      geht das? Wenn ja, wäre ein Link nett. 🙂

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @ticaki last edited by

        @ticaki

        ganz komplett hab ich es nicht verstanden.

        also du hast ein ursprungs json.
        daraus willst du ein anderes json bauen, was wahrscheinlich einfacher in der struktur ist, wie das ursprungs json.

        dann willst du das neue json auswerten

        ist das richtig?

        auf basis der aktuellen infos und meiner interpretation:
        das ist kein problem. ob tatsächlich jsonata notwendig ist, kann ich nicht beurteilen. auswerten kannst du mit normalen javascript auch schon auf basis des original javascripts

        jsonata hat eine eigene dokumentation mit beispielen
        https://jsonata.org/

        T 1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @OliverIO last edited by ticaki

          @oliverio
          Die Doku hab ich teilweise gelesen, aber zu meinem Problem keine Antwort gefunden. Lese ich sie am WE mal komplett.

          Natürlich braucht man für die Lösung des Problems kein Jsonata. Wäre nur schön, weil ich fast alles was ich an dieser Stelle brauche damit machen kann und es wirklich einfach zu erweitern wäre.

          EDIT:

          Ne du hast was falsch verstanden(glaube ich), ich habe ein UrsprungsJson, auf das wende ich die einzelnen Keys vom formatedKeys Json mit Jsonata an, und dann erhalte ich ein Json mit formatierten Daten für die Weiterverarbeitung.

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @ticaki last edited by OliverIO

            @ticaki sagte in Frage zu Jsonata:

            Ne du hast was falsch verstanden(glaube ich), ich habe ein UrsprungsJson, auf das wende ich die einzelnen Keys vom formatedKeys Json mit Jsonata an, und dann erhalte ich ein Json mit formatierten Daten für die Weiterverarbeitung

            genau das habe ich geschrieben

            damit du dich mit dem programmieren nicht rumärgern muss, kannst du am anfang die einzelnen ausdrücke zusammen mit deiner json ausprobieren
            https://try.jsonata.org/

            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @OliverIO last edited by

              @oliverio
              Danke - keine Ahnung wieso ich das nicht schon im ersten Lesedurchlauf verstanden habe. War wohl zu fixiert auf Arrays.

              $lookup({'minor':1, 'moderate':2, 'severe':3, 'extreme':4},$lowercase(properties.SEVERITY))
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              413
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              2
              5
              268
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo