を使用してJsonArray *に含まれている数字を取得できません:は、私はカールを使用して、サーバから受信アレイ応答に含まれる値を取得することができませんJSON-glibの
struct string data;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data); //response from the server is written to data
curl_easy_perform(curl);
dlog_print(DLOG_DEBUG, LOG_TAG, "%s", data.len, data.ptr);
私が正常に応答し、上記DLOGを取得します私は、次の手順を実行して、JSON配列「タイムスタンプ」の値を印刷しようとしています
{"timestamps":[1486371362000,1486371422000,1486371482000]}
::次のように出力さ
JsonParser *parser = json_parser_new();
g_type_init();
json_parser_load_from_data(parser, data.ptr, data.len, &error);
JsonNode *root = json_parser_get_root(parser);
JsonObject *obj = json_node_get_object(root);
JsonArray *array = (JsonArray*)json_object_get_array_member(obj,"timestamps");
json_array_foreach_element(timestamps, forEachJsonElement, NULL);
マイforEachJsonElement機能は以下に定義される:
void forEachJsonElement(JsonArray *array, guint index, JsonNode *element_node, gpointer user_data){
dlog_print(DLOG_DEBUG, LOG_TAG, "forEachJsonElement index: %d", index);
dlog_print(DLOG_DEBUG, LOG_TAG, "forEachJsonElement value: %f", json_node_get_double(element_node));
}
dlogs印刷:
forEachJsonElement index: 0
forEachJsonElement value: 0.000000
forEachJsonElement index: 1
forEachJsonElement value: 0.000000
forEachJsonElement index: 2
forEachJsonElement value: 0.000000
私の質問は、なぜこれらの値は常にjson_node_get_double使用して0をプリントアウトしますか?最初のdlogに表示されている値1486371362000、1486371422000、および1486371482000を正しく取得するにはどうすればよいですか。私はjson_node_get_intとjson-glibライブラリで私が利用できると思うことがあるものはすべて試しましたが、json_node_get_doubleは常に0.00000を返します。私はこれが必要なので、サーバーが処理した元の配列からこれらの値に一致する要素を適切に削除できます。
ありがとうございました!