json-cの使い方(json_object_get_string)

Posted by roadman on Monday, July 30, 2012

TOC

json-cについて

 json-cとは、C言語でjsonのbuild/parseを行うライブラリ。
 なかなか便利なのだが、ドキュメントがあんまりないので自分でメモしていく。将来的にはまとめてドキュメントにしたい。
 今回は、関数の一つである json_object_get_string()とjson_object_to_json_string() について。
 json-cにおいては、jsonテキストをbuildするために(またはparseすると)json_objectという形式でデータを管理する。

使い方

 jsonのvalueやkeyも最終的にこの形式になるのだが、そこから実際のテキストデータを取り出すのが…

  • json_object_get_string()
  • json_object_to_json_string()

 …といった関数。それぞれの動作だが、以下のようなjsonテキストがあったとする。

{ "animal" : "dog" }

 これをparseするコード。

#include
#include
#include
#include
#include "json.h"
int main(int argc, char **argv)
{
    json_object *new_obj;
    MC_SET_DEBUG(1);
    new_obj = json_tokener_parse("{ \"animal\": \"dog\" }");
    json_object_object_foreach(new_obj, key, val)
    {
        printf("key :%s\n", key);
        printf("json_object_to_json_string:%s\n", json_object_to_json_string(val));
        printf("json_object_get_string :%s\n", json_object_get_string(val));
    }
    json_object_put(new_obj);
    return 0;
}

 このコードを実行すると結果はこうなる。

key :animal
json_object_to_json_string:"dog"
json_object_get_string :dog

 json_object_to_json_string()はjsonオブジェクトをそのままテキスト化(前後の”もついたまま)取得します。
 json_object_get_string()はjsonオブジェクトの形式がstringであることを前提に前後の”は削除して取得します。