|
|
|
|
Referenz verstanden
|
|
|
|
|
|
|
Ich habe einen JSON String, in dem State Changes protkolliert werden. D.h. der Inhalt kann relativ beliebig sein (und damit auch die Struktur).
Beispiel:
|
Code: |
{
"components": {
"comp1": {
"base": {
"app": {
"ioIn": {
"in24v": [2242, 2245],
"ntc": [2941, 2940],
"flow1": [10356185, 10356197]
}
}
}
},
"comp2": {
"base": {
"app": {
"ioIn": {
"in12v": [1234, 1237],
"ntc": [7, 8],
"flow2": [9, 10]
}
}
}
}
}
}
|
|
Auf der letzten Ebene das Array ist immer nach dem Schema [altwert, neuwert]. Das oben ist ein Beispiel, es kann auch sein dass man nur 2 Ebenen hat oder 7..
Ich möchte alle "Neuwerte" rausziehen, die sich darin finden. Das ist ja relativ einfach. Wozu mein IQ nicht reicht ist, dass ich den "Pfad" (oder wie nennt man das bei JSON?) auch mitnehme. Also in der Form:
components.comp1.base.app.ioIn.in24v => 2245
Ich bin das rekursiv angegangen. Aber ich weiß nicht so recht, wie das dynamische Händeln vom Pfad gelöst werden kann.
Hier die Funktion als PHP-Code:
|
Code: |
$json = json_decode($jsonStr); // load as json object
iterate($json, $myData, $path);
function iterate($json, &$data = array(), &$path = '')
{
if(is_object($json))
{
foreach($json as $k => $v)
{
if(is_array($json->$k)) // last level with values [old, new]
{
$data[$path.$k] = $json->$k[1]; // store as associative array
continue;
}
$path .= $k.'.';
iterate($json->$k, $data, $path);
$path = ''; // reset path
}
}
else
{
// do nothing
}
}
|
|
Mit den Eingangsdaten oben sind die ersten 3 Werte richtig. Bei den zweiten 3 aber fehlt dann der erste Knoten "components", da der Pfad ja mittendrin komplett zurückgesetzt wird. Muss ich mir merken in welcher Ebene ich bin und dann den Pfad immer nur anteilig zurücksetzen oder was wäre hier ein schlauer Ansatz?
|
|
|
|
|
|
|
| Zitat von [KdM]MrDeath
Pygame könnt sich doch gut dafür eignen?
| | https://love2d.org/ wäre was ähnliches mit Lua statt Python.
Geht auch auf Android und mit multi-touch support, das habe ich aber noch nie benutzt.
|
|
|
|
|
|
|
| Zitat von Swot
Ich habe einen JSON String[...]
| |
Kannst du anhand einer Beispiel Eingabe eine Beispiel Ausgabe zeigen?
Also soll dann sowas bei rauskommen?
|
Code: |
{
"components": {
"comp1": {
"base": {
"app": {
"ioIn": {
"in24v": 2245,
"ntc": 2940,
"flow1": 10356197
}
}
}
},
"comp2": {
"base": {
"app": {
"ioIn": {
"in12v": 1237,
"ntc": 8,
"flow2": 10
}
}
}
}
}
}
|
|
|
|
|
|
|
|
|
@X-Tender: Am liebsten einfach als simples assoziatives Array:
Beispielausgabe (auf Basis der obigen Beispieleingabe). Was ein var_dump($data) eben ausspuckt:
array (size=6)
'components.comp1.base.app.ioIn.in24v' => int 2245
'components.comp1.base.app.ioIn.ntcCarb' => int 2940
'components.comp1.base.app.ioIn.flow1' => int 10356197
'components.comp2.base.app.ioIn.in12v' => int 1237
'components.comp2.base.app.ioIn.ntcCarb' => int 8
'components.comp2.base.app.ioIn.flow2' => int 10
kann aber natürlich auch als nicht-assoziatives sein:
array(
array('components.comp1.base.app.ioIn.in24v', 2245)
...
)
Streng genommen ist mir dieser Pfad gar nicht so wichtig, aber ich muss die Werte zwangsläufig unterscheiden. Wenn ich nur "ntc=xyz" nehme, dann weiß man ja nicht mehr ob diese zu comp1 oder comp2 gehörte.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Swot am 18.03.2023 10:32]
|
|
|
|
|
|
|
Code: |
function getNewValueWithPath(&$data, $path = '', &$result = []) {
foreach ($data as $key => &$value) {
$newPath = $path ? "$path.$key" : $key;
if (is_object($value)) {
getNewValueWithPath($value, $newPath, $result);
} else {
$result[$newPath] = $value[1];
}
}
}
$data = json_decode($json, false);
getNewValueWithPath($data,'',$result);
$output = json_encode($result, JSON_PRETTY_PRINT);
echo $output;
|
|
Bringt diese Ausgabe bei deinem json
|
Code: |
{
"components.comp1.base.app.ioIn.in24v": 2245,
"components.comp1.base.app.ioIn.ntc": 2940,
"components.comp1.base.app.ioIn.flow1": 10356197,
"components.comp2.base.app.ioIn.in12v": 1237,
"components.comp2.base.app.ioIn.ntc": 8,
"components.comp2.base.app.ioIn.flow2": 10
}
|
|
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von X-Tender am 18.03.2023 10:34]
|
|
|
|
|
|
Top, macht genau das, was es soll. Vielen Dank.
Eine Frage nachdem ich es noch durchgegangen bin: Wozu der Referenz-Operator in der foreach Schleife (&$value)? Lässt man den weg, scheint sich auch nichts zu ändern.
|
|
|
|
|
|
|
| Zitat von Swot
Mit den Eingangsdaten oben sind die ersten 3 Werte richtig. Bei den zweiten 3 aber fehlt dann der erste Knoten "components", da der Pfad ja mittendrin komplett zurückgesetzt wird.
| |
erm das problem hast du glaube ich richtig erkannt? wie wär es mit dem versuch das dann einfach nicht zu machen?
z.b.
die drei zeilen
|
Code: |
$path .= $k.'.';
iterate($json->$k, $data, $path);
$path = ''; // reset path
|
|
durch
|
Code: |
iterate($json->$k, $data, $path.$k.'.');
|
|
zu ersetzen?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [KdM]MrDeath am 18.03.2023 11:53]
|
|
|
|
|
|
Tatsache, da lag mein Fehler also. Ich meine klar bin ich auf die Idee gekommen es nicht zu tun, aber ich hatte den Parameter $path per Referenz übergeben (irgendwie dachte ich das sei alternativlos) und dadurch wurde der immer weiter konkateniert, sodass Blödsinn rauskam
Danke auch dir fürs Drüberschauen!
|
|
|
|
|
|
|
| Zitat von Swot
Top, macht genau das, was es soll. Vielen Dank.
Eine Frage nachdem ich es noch durchgegangen bin: Wozu der Referenz-Operator in der foreach Schleife (&$value)? Lässt man den weg, scheint sich auch nichts zu ändern.
| |
Ja. War noch ein uberbleibsel als ich dachte es soll als selbe Struktur Objekt zurückgegeben werden.
Frickel Artefakte.
|
|
|
|
|
|
|
Jemand hat schdaddigs auf Wish bestellt, um ein sehr naises Video über hash tables zu machen:
|
|
|
|
|
|
|
Schönen Gruß an Ameisenfutter.
|
|
|
|
|
|
|
Der einzige Zufallsgenerator, der zufälliger ist als Zufall?
|
|
|
|
|
|
|
| Zitat von Oli
Schönen Gruß an Ameisenfutter.
| |
In der Signalgruppe kam (natürlich von mir) schon der Jokus, dass die Wagenreihung vermutlich kryptografisch sicher sei. Bin einfach 1 funny dude
/ Dass ich die memes von Arbeitskolllegen zugespielt kriege bevor sie hier im p0t landen ist natürlich ein Armutszeugnis. Ihr werdet alt.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Ameisenfutter am 21.03.2023 6:05]
|
|
|
|
|
|
nur übertroffen von "kombaliert". Arghhhh der muss noch "kombalieren"
|
|
|
|
|
|
|
|
|
|
|
ich weiß, spätzünder, aber ich spiel auch grad mal etwas mit chat-gpt rum und lass mir spasshalber skripte für diverse routinetasks generieren.
zwar nicht perfekt, aber durchaus zu gebrauchen - vor allem wenn man statt 20min coden nur 2min beschreiben und dann nochmal 2min prüfen muss
|
|
|
|
|
|
|
Für die Shell? Das funktioniert tatsächlich ganz gut, komplexere Sachen haben bei mir allerdings eher selten geklappt.
|
|
|
|
|
|
|
Für das Erstellen bzw. Bootstrappen von CI scripts ist es auch gut zu gebrauchen
|
|
|
|
|
|
|
| Zitat von homer is alive
Für die Shell? Das funktioniert tatsächlich ganz gut, komplexere Sachen haben bei mir allerdings eher selten geklappt.
| |
powershell.
ich stoß momentan eher bei mir selbst an die grenzen, im sinne dass ich mir bei manchen sachen nicht sicher bin, wie ich sie nur in prosa beschreiben soll.
|
|
|
|
|
|
|
Ist hier jemand von euch auf exercism.io registriert? Das ist ne Plattform um neue Sprachen zu lernen, mit insgesamt knapp 70 language tracks mit mindestens ner Handvoll Übungsaufgaben, zusätzlich bei den älteren Tracks auch etwas Lernmaterial usw. dabei. Außerdem kann man sich Hilfe von anderen holen, wenn's mal wo hängt und natürlich auch den Code von anderen reviewen. Eigentlich ganz nice. Kann evtl. auch in den Startpost.
Weil ich gerade Elternzeit und damit mehr Computerzeit (privat aber) habe als sonst, probier ich nun mal etwas konkreter mit funktionaler Programmierung wärmer zu werden und hab dafür die Tracks für Elixir und F# angepackt. Jetzt hab ich hier ne Lösung in F#, welche sich für mich einfach krude anfühlt, ohne genau zu wissen warum, mein Mentoring Request hängt aber schon seit 3 Tagen in der Queue und niemand hat Bock wie's aussieht.
Hier gibt's doch Leute die sich zumindest mit Haskell, Erlang, Elixir auskennen. Hat jemand Bock sich mal meinen Mist anzusehen?
https://exercism.org/mentoring/external_requests/2447e6781e364e5a83609b4622b1c7e7
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von statixx am 27.03.2023 9:41]
|
|
|
|
|
|
Kenn mich mit den mathematisch ästhetischen funktionalen Sprachen nicht, aber danke für den Tipp.
Will schon die eine oder andere Sprache noch neu lernen, aber hab oft nicht so die Idee mit was zu starten
|
|
|
|
|
|
|
Die 12in23-challenge ist dafür die beste Gelegenheit. Noch 3 Tage Zeit um das März-Fleißkärtchen abzugreifen.
|
|
|
|
|
|
|
Das geht mir alles zu schnell heutzutage
|
|
|
|
|
|
|
Frage für einen Freund aus Indien: Er hat von der TUHH eine Zusage für Computer Science bekommen und wartet gleichzeitig auf die FAU Erlangen. Sollte er von dort auch eine Zusage bekommen, welche Fakultät ist ihm eher zu empfehlen?
Danke!
|
|
|
|
|
|
|
| Zitat von statixx
Ist hier jemand von euch auf exercism.io registriert? Das ist ne Plattform um neue Sprachen zu lernen, mit insgesamt knapp 70 language tracks mit mindestens ner Handvoll Übungsaufgaben, zusätzlich bei den älteren Tracks auch etwas Lernmaterial usw. dabei. Außerdem kann man sich Hilfe von anderen holen, wenn's mal wo hängt und natürlich auch den Code von anderen reviewen. Eigentlich ganz nice. Kann evtl. auch in den Startpost.
Weil ich gerade Elternzeit und damit mehr Computerzeit (privat aber) habe als sonst, probier ich nun mal etwas konkreter mit funktionaler Programmierung wärmer zu werden und hab dafür die Tracks für Elixir und F# angepackt. Jetzt hab ich hier ne Lösung in F#, welche sich für mich einfach krude anfühlt, ohne genau zu wissen warum, mein Mentoring Request hängt aber schon seit 3 Tagen in der Queue und niemand hat Bock wie's aussieht.
Hier gibt's doch Leute die sich zumindest mit Haskell, Erlang, Elixir auskennen. Hat jemand Bock sich mal meinen Mist anzusehen?
https://exercism.org/mentoring/external_requests/2447e6781e364e5a83609b4622b1c7e7
| |
kann zwar kein F# aber ein bischen funktional kann ja jeder, nech?
hab da jetzt dreimal auf "mentor werden" geklickt aber seh nichts... gnah
|
|
|
|
|
|
|
| Zitat von hardCoreGEN
Frage für einen Freund aus Indien: Er hat von der TUHH eine Zusage für Computer Science bekommen und wartet gleichzeitig auf die FAU Erlangen. Sollte er von dort auch eine Zusage bekommen, welche Fakultät ist ihm eher zu empfehlen?
Danke!
| |
Erlangen weil ist schön hier aber ganz praktischer Aspekt: Wohnungssuche berücksichtigen, ist in Erlangen teilweise höchst nervig. Siehe z.B. https://www.br.de/nachrichten/bayern/zimmer-frei-uni-und-stadt-erlangen-suchen-studentenwohnungen,TVNfkQw dazu. Kann natürlich in Hamburg ähnlich sein, dazu kenn ich die Stadt zu wenig. Ansonsten ist die Region in Sachen IT zu empfehlen da es doch einiges an Firmen hier aus dem Bereich gibt.
¤: In Erlangen dürften Inder auch die größte Gruppe an Ausländer sein (bedingt durch die Firmen und die Uni).
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von mc.smurf am 28.03.2023 7:18]
|
|
|
|
|
|
| Zitat von [KdM]MrDeath
kann zwar kein F# aber ein bischen funktional kann ja jeder, nech?
hab da jetzt dreimal auf "mentor werden" geklickt aber seh nichts... gnah
| |
Mag dran liegen dass sich gestern doch noch jemand erbarmt hat.
Danke dir trotzdem! Ich überarbeitete es heut mal, kann dann ja für shits and giggles ein vorher/nachdas posten.
|
|
|
|
|
|
|
Selbiges bei mir. Habe zwar kein f# aber Scala gemacht, konsebsuell kann man das ja schon zum Teil übertragen
|
|
|
|
|
|
|
| Zitat von mc.smurf
| Zitat von hardCoreGEN
Frage für einen Freund aus Indien: Er hat von der TUHH eine Zusage für Computer Science bekommen und wartet gleichzeitig auf die FAU Erlangen. Sollte er von dort auch eine Zusage bekommen, welche Fakultät ist ihm eher zu empfehlen?
Danke!
| |
Erlangen weil ist schön hier aber ganz praktischer Aspekt: Wohnungssuche berücksichtigen, ist in Erlangen teilweise höchst nervig. Siehe z.B. https://www.br.de/nachrichten/bayern/zimmer-frei-uni-und-stadt-erlangen-suchen-studentenwohnungen,TVNfkQw dazu. Kann natürlich in Hamburg ähnlich sein, dazu kenn ich die Stadt zu wenig. Ansonsten ist die Region in Sachen IT zu empfehlen da es doch einiges an Firmen hier aus dem Bereich gibt.
¤: In Erlangen dürften Inder auch die größte Gruppe an Ausländer sein (bedingt durch die Firmen und die Uni).
| |
Danke, die Info gebe ich so weiter.
|
|
|
|
|
|
Thema: Software-Entwicklung 1 ( Nach log4j ist nichts mehr wie es war ) |