| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | #pragma once#include "TransformConfig.h"#include "cJSON.h"namespace bell {class JSONTransformConfig : public bell::TransformConfig { private:  cJSON* json; public:  JSONTransformConfig(cJSON* body) { this->json = body; };  ~JSONTransformConfig(){};  std::string rawGetString(const std::string& field) override {    cJSON* value = cJSON_GetObjectItem(json, field.c_str());    if (value != NULL && cJSON_IsString(value)) {      return std::string(value->valuestring);    }    return "invalid";  }  std::vector<int> rawGetIntArray(const std::string& field) override {    std::vector<int> result;    cJSON* value = cJSON_GetObjectItem(json, field.c_str());    if (value != NULL && cJSON_IsArray(value)) {      for (int i = 0; i < cJSON_GetArraySize(value); i++) {        cJSON* item = cJSON_GetArrayItem(value, i);        if (item != NULL && cJSON_IsNumber(item)) {          result.push_back(item->valueint);        }      }    }    return result;  }  std::vector<float> rawGetFloatArray(const std::string& field) override {    std::vector<float> result;    cJSON* value = cJSON_GetObjectItem(json, field.c_str());    if (value != NULL && cJSON_IsArray(value)) {      for (int i = 0; i < cJSON_GetArraySize(value); i++) {        cJSON* item = cJSON_GetArrayItem(value, i);        if (item != NULL && cJSON_IsNumber(item)) {          result.push_back(item->valuedouble);        }      }    }    return result;  }  int rawGetInt(const std::string& field) override {    cJSON* value = cJSON_GetObjectItem(json, field.c_str());    if (value != NULL && cJSON_IsNumber(value)) {      return (int)value->valueint;    }    return invalidInt;  }  bool isArray(const std::string& field) override {    cJSON* value = cJSON_GetObjectItem(json, field.c_str());    if (value != NULL && cJSON_IsArray(value)) {      return true;    }    return false;  }  float rawGetFloat(const std::string& field) override {    cJSON* value = cJSON_GetObjectItem(json, field.c_str());    if (value != NULL && cJSON_IsNumber(value)) {      return (float)value->valuedouble;    }    return invalidInt;  }};}  // namespace bell
 |