ジェーソンめも

とりあえず実装を急ごう
適当に機能を試してみるメモ。

json_object jstring = json_object_new_string("\t");
printf("string=%s\n", json_object_get_string(jstring));
printf("string.to_string()=%s\n", json_object_to_json_string(jstring));

jstringオブジェクトに\tの文字列を挿入
json_object_get_stringで\tは実際のタブとして出力
json_object_to_json_stringで"\t"としての文字列で表示

json_object jint = json_object_new_int(9);
printf("int=%d\n", json_object_get_int(my_int));
printf("int.to_string()=%s\n", json_object_to_json_string(my_int));

intをjsonオブジェクトに挿入
json_object_get_intでintとして扱う
json_object_to_json_stringでStringとして扱う

json_object jarray = json_object_new_array();
json_object_array_add(jarray, json_object_new_int(1));
json_object_array_add(jarray, json_object_new_int(2));
json_object_array_put_idx(jarray, 3, json_object_new_int(4));

jsonobjectを配列(?)で作成
[0]に1を、[1]に2を、idxで[3]を指定して5を追加

[0] = 1
[1] = 2
[2] = null
[3] = 4

となる

for(i=0; i < json_object_array_length(jarray); i++) {
  struct json_object *jobj = json_object_array_get_idx(jarray, i);
  printf("[%d]=%s\n", i, json_object_to_json_string(jobj));
}

全部を参照する場合json_object_array_lengthで全体の長さを得る

json_object jobject = json_object_new_object();
json_object_object_add(jobject, "abc", json_object_new_int(123));
json_object_object_add(jobject, "bool", json_object_new_boolean(1));
json_object_object_add(jobject, "str", json_object_new_string("hoge"));
json_object_object_del(jobject, "str");
json_object_object_add(jobject, "arr", jarray);

jsonobjectをobjectとしてnew
intオブジェクトを追加
booleanオブジェクトを追加
stringオブジェクトを追加
strのキーのオブジェクトを削除
さっき作った配列を追加

json_object_object_foreach(jobject, key, val) {
  printf("\t%s: %s\n", key, json_object_to_json_string(val));
}

json_object_object_foreachで全データを参照

abc: 123
bool1: true
arr: [ 1, 2, null, 4 ]

と出力される。

json_object_put(jobj);

それぞれで使い終わったオブジェクトは開放する