c中的json数组解析

我试图解析一个json数组,我面临着问题。

我的数组是这样的:

configure: { "id": 4, "userId": 107, "deviceMacAddress": "00:06:66:30:02:3C", "medication": [{ "id": 11, "version": 18, "name": "name1", "unit": "mg", "forMed": "for1", "schedule": [1] }, { "id": 45, "version": 1, "name": "sdga",, "unit": "mg", "forMed": "54234", "schedule": [0,1,2,3,4,5,6] }], 

我能够访问药物数组和打印总数组,但无法访问数组内的对象。 你能用C语言建议任何解决方案或任何例子吗?

mycode的

 int main(int argc, char **argv) { struct json_object *med_obj, *medi_obj, *tmp1_obj; struct array_list *lArray; charname[10] = {0}; static const char filename[] = "xyz.txt"; med_obj = json_object_from_file(filename); medi_obj = json_object_object_get(med_obj, "medication"); lArray = json_object_get_array(medi_obj); tmp1_obj = json_object_object_get(medi_obj, "name"); strcpy (name,json_object_to_json_string(tmp1_obj)); printf("name=%s\n",name); } 

此致,列宁。

您需要使用json_object *变量访问内部数组。

试试这个:

 struct json_object *med_obj, *medi_array, *medi_array_obj, *medi_array_obj_name; int arraylen, i; charname[10] = {0}; static const char filename[] = "xyz.txt"; med_obj = json_object_from_file(filename); medi_array = json_object_object_get(med_obj, "medication"); // medi_array is an array of objects arraylen = json_object_array_length(medi_array); for (i = 0; i < arraylen; i++) { // get the i-th object in medi_array medi_array_obj = json_object_array_get_idx(medi_array, i); // get the name attribute in the i-th object medi_array_obj_name = json_object_object_get(medi_array_obj, "name"); // print out the name attribute printf("name=%s\n", json_object_get_string(medi_array_obj_name)); } 

您可以使用jsoncpp来完成这项工作。 数组作为Json :: Value,你可以

 medicationValue = jsonObject[medicationKey]; Json::Value::Members member; member = medicationValue .getMemberNames(); for (Json::Value::Members::iterator iter = member.begin(); iter != member.end(); iter++) { the element of medication here } 

我希望能帮助你。

如果要将数组作为json对象访问,则应将其作为json_object *而不是array_list *

 struct json_object *lArray; ... lArray=json_object_get(medi_obj); tmp1_obj = json_object_object_get(json_object_array_get_idx(lArray, 0), "name"); 

您可以使用任何YAML解析库,例如在这里查看。