2016-10-18 1 views
1

Ich bin neu in JSON und Jansson. Ich versuche, eine Nachricht in JSON mit Jansson-Bibliothek zu erstellen und mit UDP zu senden. Was erfordert in Byte-Array. Puffer und Länge der Nachricht in Bytes. Ich habe es mit json_object_size() versucht. Aber es gibt nur eine Anzahl von Elementen im Objekt zurück. Bitte schlage mir einen Weg vor.Konvertieren von JSON in Byte-Array in C

json_t *messagebody = json_object(); 
json_object_set_new(messagebody, "request_id", request_id); 
json_object_set_new(messagebody, "process_id", json_string(process_id)); 
json_object_set_new(messagebody, "process_server_id", json_string(process_server_id)); 
json_object_set_new(messagebody, "ip_address", json_string(my_ip_address)); 
json_object_set_new(messagebody, "action", action); 
+0

Ein C-String ist ein "Byte-Array". Wirf den String-Namen in ein unsigniertes Zeichen * und prüfe, ob die Länge strlen() oder strlen() +1 ist, je nachdem, ob der Empfänger den Wert nul erwartet. –

+1

Wow das Jansson-Dokument ist redicuous Das Hauptbeispiel verbringt 99% seiner Zeit damit, über Git zu reden, und es gibt kein Beispiel dafür, wie man eigene JSONs baut und ausgibt, sondern nur andere Völker extrahiert. –

Antwort

2

Es scheint, Sie rufen einfach char *json_dumps(const json_t *json, size_t flags).

Das wird Ihnen ein Char * zu einer nullterminierten Zeichenfolge geben, die die codierten JSON-Daten darstellt. Sie müssen es freigeben, nachdem Sie damit fertig sind. Um die Länge in Bytes zu erhalten, sollte man einfach strlen() für das Ergebnis verwenden können.

Die Flags werden in der API-Referenz unter "Codierung" erläutert.

+0

danke. Es funktionierte – Abu

Verwandte Themen