如何在TwinCAT3中向数组添加对象并导出为JSON文件?
用FB_JsonDomParser生成结构体数组JSON文件的实现方法
要生成你需要的JSON格式,核心是遍历结构体数组,为每个结构体创建对应的JSON对象,再将对象逐一加入数组中。以下是完整的实现代码:
// 变量声明 fbJson : FB_JsonDomParser; jRoot : SJsonValue; jArray : SJsonValue; jObj : SJsonValue; bSaveJsonFile : BOOL; arr : ARRAY[0..9] OF MYSTRUCT; // MYSTRUCT包含int类型a和real类型b i : INT; // 执行逻辑 jRoot := fbJson.NewDocument(); // 创建名为MyArray的数组成员,第三个参数是初始元素数量(可设0) jArray := fbJson.AddArrayMember(jRoot, 'MyArray', 0); // 遍历结构体数组,将每个元素转为JSON对象并加入数组 FOR i := 0 TO 9 DO // 创建新的JSON对象 jObj := fbJson.NewObject(); // 向对象添加int类型成员a fbJson.AddIntMember(jObj, 'a', arr[i].a); // 向对象添加real类型成员b fbJson.AddRealMember(jObj, 'b', arr[i].b); // 将对象添加到MyArray数组中 fbJson.AddArrayElement(jArray, jObj); END_FOR // 保存JSON到文件,当bSaveJsonFile为TRUE时执行 fbJson.SaveDocumentToFile(sFile := 'C:\tmp\test.json', bExec := bSaveJsonFile);
关键说明
- 用
NewObject()创建每个结构体对应的JSON对象 - 根据结构体成员的数据类型,调用对应
AddXXXMember方法(如AddIntMember、AddRealMember)添加属性 - 通过
AddArrayElement将创建好的JSON对象加入到MyArray数组中 - 循环遍历结构体数组时,可根据实际需求调整遍历范围(比如只处理已赋值的元素)
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

