在C語言中,我們可以使用json-c庫來實現json-rpc的功能。首先,我們需要引入json-c庫,然后使用以下代碼來構造一個json object:
json_object *request = json_object_new_object(); json_object_object_add(request, "jsonrpc", json_object_new_string("2.0")); json_object_object_add(request, "method", json_object_new_string("methodName")); json_object_object_add(request, "params", json_object_new_array()); json_object_array_add(json_object_object_get(request, "params"), json_object_new_string("parameter1")); json_object_array_add(json_object_object_get(request, "params"), json_object_new_int(123)); json_object_object_add(request, "id", json_object_new_int(1));
在這個例子中,我們構造了一個json rpc請求,其中包含了jsonrpc版本號、方法名、參數和請求id。如果需要發送一個批量請求,則可以使用json_object_new_array()函數來構造一個json array,將多個請求放入其中。
接下來,我們需要將這個json object轉換為一個字符串,以便發送到服務端:
const char *requestStr = json_object_to_json_string(request);
發送請求后,我們會收到一個json rpc響應。我們可以使用以下代碼將響應轉換為一個json object:
json_object *response = json_tokener_parse(responseStr);
在這個例子中,responseStr是一個包含響應內容的json字符串。
接下來,我們可以使用json_object_object_get()函數獲取響應中的各個字段:
json_object *result = json_object_object_get(response, "result"); json_object *error = json_object_object_get(response, "error"); json_object *id = json_object_object_get(response, "id");
如果響應中存在錯誤,則error字段將不為空。我們可以使用以下代碼來獲取錯誤信息:
if(error != NULL) { json_object *errorMessage = json_object_object_get(error, "message"); printf("Error message: %s", json_object_get_string(errorMessage)); }
最后,記得在程序結束時釋放json object的內存:
json_object_put(request); json_object_put(response);
上一篇go中json解析
下一篇python 透視表匯總