90 json_object *o = NULL;
93 if (json_object_object_get_ex(js,
"address", &o))
96 unsigned int dataCount = 0;
99 if (json_object_object_get_ex(js,
"data", &o))
101 dataCount = json_object_array_length(o);
102 for (
unsigned int i = 0; i < dataCount; ++i)
104 json_object *di = json_object_array_get_idx(o, i);
106 if (json_object_object_get_ex(di,
"type", &v))
108 if (json_object_object_get_ex(di,
"data", &v))
109 data[i] = json_object_get(v);
122 json_object *js = json_object_new_object();
128 json_object_object_add(js,
"address", json_object_new_string(value->address));
130 if (value->dataCount)
132 struct json_object *data = json_object_new_array();
133 for (
unsigned int i = 0; i < value->dataCount; ++i)
135 struct json_object *v = json_object_new_object();
137 json_object_object_add(v,
"data", json_object_get(value->data[i]));
138 json_object_array_add(data, v);
140 json_object_object_add(js,
"data", data);
153 return strdup(
"No message");
155 int dataCount = value->dataCount;
156 char *data[dataCount];
159 for (
int i = 0; i < dataCount; ++i)
161 json_object *o = value->data[i];
162 switch (json_object_get_type(o))
165 data[i] = strdup(
"null");
167 case json_type_boolean:
168 data[i] = strdup(json_object_get_boolean(o) ?
"true" :
"false");
170 case json_type_double:
172 double v = json_object_get_double(o);
178 long long v = json_object_get_int64(o);
182 case json_type_string:
183 data[i] = strdup(json_object_get_string(o));
186 data[i] = strdup(
"?");
192 for (
int i = 0; i < dataCount; ++i)
193 dataSize += strlen(data[i]);
195 dataSize += (dataCount - 1) * strlen(
", ");
198 char *compositeData = (
char *)malloc(dataSize);
199 compositeData[0] = 0;
200 for (
int i = 0; i < dataCount; ++i)
203 strlcat(compositeData,
", ", dataSize);
204 strlcat(compositeData, data[i], dataSize);
207 char *valueAsString =
VuoText_format(
"%s<br>[ %s ]", value->address, compositeData);
210 for (
int i = 0; i < dataCount; ++i)
213 return valueAsString;