如何用Parson构造JSON数组?

How to construct JSON array with Parson?

我正在使用 Parson 库将传感器数据从 MCU 发送到服务器。我想生成以下 JSON,但 我不知道如何生成数组 ("sensors" 和 "measurements")。

{
  "systemInfo:": {
  "hubId": "1234",
  "battery:": {
      "value": 3.3,
      "unit": "V"
   }
 },
 "sensors": [
 {
   "name": "S1",
   "measurements:": [
    {
      "measuredValue": "val",
      "value": 123,
      "unit": "unit"
    }
  ]
 },
 {
   "name": "S2",
   "measurements": [
    {
      "measuredValue": "val1",
      "value": 123,
      "unit": "unit1"
    },
    {
      "measuredValue": "val2",
      "value": 123,
      "unit": "unit2"
    }
  ]
 },
 {
   "name": "s3",
   "measurements": [
    {
      "measuredValue": "val",
      "value": 120,
      "unit": "unit"
    }
   ]
  }
 ]
}

GitHub页面(serialization_example)上有一个例子,通过解析字符串生成数组:

json_object_dotset_value(root_object, "contact.emails",
                         json_parse_string("[\"email@example.com\", \"email2@example.com\"]"));

但我想使用 API 函数生成它,而不是像上面的示例那样手动构建字符串。例如,通过使用

json_object_set_string()
json_object_dotset_string()
json_object_dotset_number() etc.

可能吗?或者API不提供这个功能?

我没有找到解决问题的方法,而是找到了另一个库 cJSON,它可以满足我的需要。

我被困在同一点上,但当我查看 parson.h 和 parson.c 时,我发现了对 Json_Array 的支持。这里只是一个示例代码来提供帮助。

    //creating a Json_Array
    JSON_Value *branch = json_value_init_array();
    JSON_Array *leaves = json_value_get_array(branch);
    
    //creating measurement Json

    JSON_Value *leaf_value = json_value_init_object();
    JSON_Object *leaf_object = json_value_get_object(leaf_value);
    json_object_set_number(leaf_object,"name1",123);
    json_object_set_number(leaf_object,"name2",456);
    json_object_set_number(leaf_object,"name3",789);
    json_array_append_value(leaves,leaf_value);

希望对您有所帮助。