工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

C言語JSONライブラリparsonの使い方 自分用覚書

背景と目的

Arduinoで、JSONを扱いたかったため、parsonというC言語ライブラリを使用した。使い方を自分用にメモする。



使いそうなものを列挙

空の状態"{}"に、データを追加していき、シリアライズするまで、おおむね使いそうなものを列挙。

#include "parson.h"

:

// ルートValueを作成
JSON_Value *rootValue = json_value_init_object();

// ルートObjectを取得
JSON_Object *rootObj = json_object(rootValue);

// 文字列を追加
json_object_set_string(rootObj, "string", "hello");
// 数値を追加
json_object_set_number(rootObj, "number", 1.01);
// ブール値を追加
json_object_set_number(rootObj, "bool", 1);

// 配列を追加 -----------------------------------------------
// 配列Valueを作成
JSON_Value *arrayValue = json_value_init_array();
// JSON_Arrayを取得
JSON_Array *arr = json_value_get_array(arrayValue);
// 配列要素を追加
json_array_append_number(arr, 2.02); // 数値
json_array_append_string(arr, "hello, array."); // 文字列
JSON_Value *objValue = json_value_init_object(); // オブジェクト(空)
json_array_append_value(arr, objValue);
JSON_Value *arrayValue2 = json_value_init_array(); // 配列(空)
json_array_append_value(arr, arrayValue2);
// rootObjに追加
json_object_set_value(rootObj, "array", arrayValue);

// シリアライズ
char *jsonString = json_serialize_to_string(rootValue);
Serial.printf("jsonString=%s\n", jsonString);


シリアライズした結果は、以下。

jsonString={"string":"hello","number":1.01,"bool":1,"array":[2.02,"hello, array.",{},[]]}

参考

https://github.com/kgabis/parson/blob/master/parson.h