2016-10-18 41 views
1

私はJSONとjanssonを初めて使用しています。 janssonライブラリを使用してJSONでメッセージを作成し、UDPを使用して送信しようとしています。バイト配列で必要です。メッセージのバッファと長さ(バイト単位)。私はjson_object_size()で試しました。しかし、それはオブジェクトの要素の数だけを返します。私は方法を提案してください。JSONを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

C文字列は「バイト配列」です。文字列名をunsigned char *にキャストし、受信者がnulを期待するかどうかによって、長さがstrlen()かstrlen()+1かどうかを確認します。 –

+1

さて、janssonのドキュメントは目立ちますが、主な例は99%の時間をgitに費やしています。独自のJSONを構築して出力する例はなく、他の人を抽出するだけです。ありがとうございます。 –

答えて

2

char *json_dumps(const json_t *json, size_t flags)と表示されたようです。

これは、エンコードされたjsonデータを表すヌル終了文字列にchar *を渡します。あなたはそれを終了した後にそれを解放する必要があります。長さをバイト数で取得するには、結果にstrlen()を使用するだけで済みます。

フラグはAPIリファレンスの 'encoding'で説明されています。

+0

出来た – Abu

関連する問題