【发布时间】:2018-12-13 15:57:45
【问题描述】:
我想用 post 方法向 KairosDB 发送数据,但我的 Json 不正确。 Json 必须是这样的:
{
"name":"Hermle_1",
"datapoints":[
[
"1530710258000",
23.0
],
[
"1530710257000",
21.0
]
],
"tags":{
"SensorName":"capteur_temperature"
}
}
对于数据点,我将Dictionary<string, float> 添加到我的对象中。当我序列化它时我有什么:
{
"name":"Hermle_1",
"datapoints":{
"1530710258000":23.0,
"1530710257000":21.0
},
"tags":{
"SensorName":"capteur_temperature"
}
}
如果我更改我的字典 .ToArray() 我有这个 Json:
{
"name":"Hermle_1",
"datapoints":[
{
"Key":"1530710258000",
"Value":23.0
},
{
"Key":"1530710257000",
"Value":21.0
}
],
"tags":{
"SensorName":"capteur_temperature"
}
}
我不知道如何为数据点生成预期格式的 json。
编辑: 我如何创建我的对象:
dynamic jsonObj = new ExpandoObject();
jsonObj.name = sd.Engine_name;
Dictionary<string, float> datapoints = new Dictionary<string, float>();
Dictionary<string, string> tags = new Dictionary<string, string>();
tags.Add("SensorName", sensor.Name);
//.........
while (reader.Read())
{
datapoints.Add(Convert.ToString(reader["time"]),
Convert.ToSingle(reader["value"]));
}
//....
jsonObj.datapoints = datapoints;
jsonObj.tags = tags;
string a = JsonConvert.SerializeObject(jsonObj, Formatting.Indented);
【问题讨论】:
-
向我们展示一些创建对象的代码。但作为第一个提示:
datapoints应该是数组数组,或者如果您愿意,可以是列表列表。不是字典