json - Json.net 附加 json 文件
问题描述
我有以下使用 Json.net 的代码:
class HistorianRecord
{
public string tagname { get; set; }
public string engunits { get; set; }
public string value { get; set; }
public string quality { get; set; }
public DateTime timestamp { get; set; }
}
private static void createJSONFile(DataTable dt)
{
var HistorianData = new List<HistorianRecord>();
foreach(DataRow row in dt.Rows)
{
HistorianData.Add(new HistorianRecord()
{
tagname = row["tagname"].ToString(),
engunits = row["engunits"].ToString(),
value = row["value"].ToString(),
quality = row["quality"].ToString(),
timestamp = DateTime.Parse(row["timestamp"].ToString())
});
}
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(HistorianData);
var deserializedResult = serializer.Deserialize<List<HistorianRecord>>(serializedResult);
File.WriteAllText(folderPath + fileName, JsonConvert.SerializeObject(deserializedResult));
}
这会产生以下JSON
文件,我已为这篇文章缩短了该文件,因为其中 > 1000 行datatable
:
[
{
"tagname": "mytag1",
"engunits": "",
"value": "2",
"quality": "Good NonSpecific",
"timestamp": "2018-12-13T10:45:05Z"
},
{
"tagname": "myTag2",
"engunits": "",
"value": "0",
"quality": "Good NonSpecific",
"timestamp": "2018-12-13T10:45:00Z"
}
]
我想修改我的代码,以便可以在 JSON 文件的开头添加一些项目,使其看起来更像这样:
[
{
"name": "ARandomName",
"content": [
{
"tagname": "mytag1",
"engunits": "",
"value": "2",
"quality": "Good NonSpecific",
"timestamp": "2018-12-13T10:45:05Z"
},
{
"tagname": "myTag2",
"engunits": "",
"value": "0",
"quality": "Good NonSpecific",
"timestamp": "2018-12-13T10:45:00Z"
}
]
}
]
这样我就可以为我正在调查的测试 MongoDB 安装创建一些文档,因此感谢所有帮助。
解决方案
您只需将您的反序列化列表包装HistorianRecords
在一个匿名对象中并重新序列化它:
var anon = new
{
name = "ARandomName",
content = deserializedResult
};
string newJson = JsonConvert.SerializeObject(anon, Formatting.Indented);
推荐阅读
- c++ - CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, PID) 返回 INVALID_HANDLE_VALUE
- flutter - 如何在颤振中使用下限?
- php - 在 PHP 中设置复选框默认选中
- airflow-scheduler - 如何在 x 次后强制失败?
- flutter - FLutter:将Listtile高度匹配到卡片高度
- javascript - 功能复制项目
- swift - Swift:更改 UIKit ViewController 呈现的 SwiftUI 视图的大小
- sql-server - 是否有选项告诉 SSMS 在生成脚本时不要使用 OPTIMIZE_FOR_SEQUENTIAL_KEY 标志?
- python - While 循环不遵守约束
- python - 如何从具有日期时间索引的数据帧中减去具有月份索引的数据帧