json-c array Sortieren
-
Hallo zusammen,
ich möchte, meine JSON Inhalt in einer array nach einem Bestimmten Wert Sortieren lassen,
nutze die Bibliothek json-c und es gib unter:https://github.com/rbtylee/tutorial-jsonc/blob/master/tutorial/sort.md
ein Beispiel, für eine einfache Sortierung, meine JSON sieht aber so aus:
[ { "POS": 0, "ID": "2545327648", "UPDATE": 1755892547, "FILE_SIZE": "34428674", "IS_ACTIV": "false" }, { "POS": 4, "ID": "1559212036", "UPDATE": 1745501111, "FILE_SIZE": "525685", "IS_ACTIV": "false" }, { "POS": 2, "ID": "2796703209", "UPDATE": 1720644377, "FILE_SIZE": "1174863", "IS_ACTIV": "true" }, { "POS": 1, "ID": "2291785308", "UPDATE": 1756819745, "FILE_SIZE": "51587989", "IS_ACTIV": "false" }, { "POS": 3, "ID": "2116151222", "UPDATE": 1755866671, "FILE_SIZE": "122657596", "IS_ACTIV": "ture" } ]
und möchte das ganze nach POS aufsteigend Sortieren lassen.
Sorry habe aber absolut keinen Ansatzplan, wie ich das umsetzte.
Gruß
-
Dafür benötigst du dann die Funktion json_object_object_get, um ein Unterelement (z.B.
"POS"
) zu lesen.
Rufe diese dann zuerst anstatt vonjson_object_get_int
oderjson_object_get_string
(aus deinem gezeigten Link) auf und vergleiche dann dessen Werte (entsprechend des Datentyps).PS: In deinem letzten Element steht
"IS_ACTIV": "ture"
(anstatt"true"
;- )
Und im englischen heißt esactive
(mite
).
-
Hallo,
vielen dank für die kleinen Hinweise der Schreibfehler, leider komme ich so nicht weiter, hier mal mein Code aber Verstehe nicht, wie ich dies Sortieren kann:
JSON:
{ "LIST": [ { "POS": 0, "ID": "2545327648", "UPDATE": 1755892547, "FILE_SIZE": "34428674", "IS_ACTIVE": "false" }, { "POS": 4, "ID": "1559212036", "UPDATE": 1745501111, "FILE_SIZE": "525685", "IS_ACTIVE": "false" }, { "POS": 2, "ID": "2796703209", "UPDATE": 1720644377, "FILE_SIZE": "1174863", "IS_ACTIVE": "ture" }, { "POS": 1, "ID": "2291785308", "UPDATE": 1756819745, "FILE_SIZE": "51587989", "IS_ACTIVE": "false" }, { "POS": 3, "ID": "2116151222", "UPDATE": 1755866671, "FILE_SIZE": "122657596", "IS_ACTIVE": "ture" } ] }
C:
#include <stdio.h> #include <json-c/json.h> int main(int argc, char const *argv[]) { json_object *JSON_FILE = json_object_from_file("./Config.json"); json_object *LIST = json_object_object_get(JSON_FILE, "LIST"); size_t LIST_Len = json_object_array_length(LIST); for (int a = 0; a < LIST_Len; a++) { json_object *OBJ = json_object_array_get_idx(LIST, a); json_object *ID = json_object_object_get(OBJ, "ID"); json_object *POS = json_object_object_get(OBJ, "POS"); printf("\t[%d] = %s (%s)\n", (int)a + 1, json_object_get_string(ID), json_object_get_string(POS)); } return 0; }
Ausgabe:
[1] = 2545327648 (0) [2] = 1559212036 (4) [3] = 2796703209 (2) [4] = 2291785308 (1) [5] = 2116151222 (3)
Ich weiß leider nicht wie ich dies jetzt nach POS Sortieren kann.
Gruß