结构体序列为JSON

本例运行效果图:

uses
SynCommons;

const /// JSON字符串
JSON1 =
'{' + #13#10 + '"glossary": {' + #13#10 + '"title": "中国",' + #13#10
+ ' "GlossDiv": {' + #13#10
+ '"title": "湖南省",' + #13#10
+ ' "GlossList": {' + #13#10
+ '"GlossEntry": {' + #13#10
+ '"ID": "湘乡市",' + #13#10
+ ' "SortAs": "SGML",' + #13#10
+ ' "GlossTerm": "Standard Generalized Markup Language",' + #13#10
+ ' "Acronym": "SGML",' + #13#10
+ ' "Abbrev": "ISO 8879:1986",' + #13#10
+ ' "GlossDef": {' + #13#10
+ '"para": "A meta-markup language, used to create markup languages such as DocBook.",' + #13#10
+ ' "GlossSeeAlso": ["咏南中间件", "XML"]' + #13#10
+ '},' + #13#10
+ ' "GlossSee": "markup"' + #13#10 + '}'
+ #13#10 + '}' + #13#10
+ '}' + #13#10
+ '}' + #13#10
+ '}';

type // 记录
TGlossary = record
glossary: record
title: string;
GlossDiv: record
title: string;
GlossList: record
GlossEntry: record
ID, SortAs, GlossTerm, Acronym, Abbrev: string;
GlossDef: record
para: string;
GlossSeeAlso: array of string;
end;
GlossSee: string;
end;
end;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
gloss: TGlossary;
json: RawUTF8;
begin
json := JSON1;
RecordLoadJSON(gloss, @json[1], TypeInfo(TGlossary)); // JSON还原为结构体
Memo1.Clear;
Memo1.Lines.Add(gloss.glossary.title); // 中国
Memo1.Lines.Add(gloss.glossary.GlossDiv.title); // 湖南省
Memo1.Lines.Add(gloss.glossary.GlossDiv.GlossList.GlossEntry.ID); // 湘乡市
Memo1.Lines.Add(gloss.glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso[0]); // 咏南中间件
json := '';
json := RecordSaveJSON(gloss, TypeInfo(TGlossary)); // 结构体序列为JSON
Memo1.Text := json;
end;

转载于:https://www.cnblogs.com/hnxxcxg/p/8793599.html

结构体序列为JSON相关推荐

  1. mormot数据库连接+查询+序列为JSON

    mormot数据库连接+查询+序列为JSON uses SynDB,SynCommons, SynDBRemote, SynOleDB, SynDBMidasVCL, mORMotMidasVCL p ...

  2. golang 学习(二十四)结构体struct 和 json之间的转换

    结构体struct 和 json之间的转换 import ("encoding/json""fmt""math/rand""tes ...

  3. Go 知识点(04)— 结构体字段转 json格式 tag 标签的作用

    我们知道在 Go 语言中无论是变量.常量还是函数,对于首字母大小写有不同的处理. 首字母大写,标志着该字段或者函数是能导出的,也就是可以被其它包所能访问的: 首字母小写,标志着该字段是私有的,只能在本 ...

  4. golang 结构体 map 转化为 json

    目录 结构体生成json json转成结构体 map生成json json转化为map 结构体生成json package mainimport ("encoding/json"& ...

  5. go语言中结构体与json

    go语言中使用Marshal函数实现结构体json化,需要有一下两点注意 因为json化是在其他函数中完成,因此需要将结构体中的成员大写,这样才能在生成的结构体中有对应的元素 在结构体后面,如果有需要 ...

  6. Go语言进阶,结构体与json字符串格式的互相转换

    对于结构体大家都很熟悉,是一种自定义类型,可以将不同类型的同属于这个类的属性(成员变量)集合在一起,换句话说这些成员变量属于键值对,那么这种也就是常见的json格式,我们来看下如何将结构体转成json ...

  7. golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct

    文章目录 1.结构体struct 1.1 声明结构体 1.2 初始化结构体 以及 传参 2. 结构体数组.append 3. 接口返回 含数组的结构体 常用写法 json string转struct ...

  8. Qt_C++JSON转结构体

    文章目录[隐藏] Qt_C++++JSON 转结构体前言 Qt_C++++JSON 转结构体需求说明 Qt_C++++JSON 转结构体代码说明 Qt_C++++JSON 转结构体最终实现效果 Qt_ ...

  9. go var type 互转_Go语言学习笔记(第九章) 结构体

    Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go 通过类型别名(alias types)和结构体的形式支持用户自定义 ...

最新文章

  1. 元素序列几个常用排序算法:一
  2. trimmomatic对fastq质控
  3. Notes客户端重新配置批处理
  4. C/C++内存分配方式 .
  5. android studio新建layout,【Android Studio安装部署系列】十六、Android studio在layout目录下新建子目录...
  6. ots在线考计算机的word,ots在线考试系统1(OTS online examination system 1).doc
  7. 杭州2019年计算机技校招生,杭州电子信息职业学校2020年招生录取分数线
  8. CPU不支持非地址对齐访问的原因
  9. sql2018 ssas_如何使用SQL Server Analysis Services(SSAS)从头开始构建多维数据集
  10. cvs的console输出含义
  11. jsarraybufferdaya释放_聊聊JS的二进制家族:Blob、ArrayBuffer和Buffer
  12. dialogfield
  13. Vue webpack打包后,css样式发生改变或不起作用
  14. 【转】The C10K problem(翻译 中文版)
  15. 【蓝牙】设备管理器找不到蓝牙
  16. linux DSA 开发上手笔记(一)
  17. google服务框架 闪退_华为的谷歌服务打不开怎么办?
  18. python有理数_Python3标准库:fractions有理数
  19. iOS 一一 frame和Bounds 以及frame和bounds区别
  20. 用前端框架开发一款APP要多少钱

热门文章

  1. 【小知识点】解决Chrome动画”卡顿”的办法
  2. Proguard混淆代码(1)
  3. [转载]VC6下安装STLport-5.2.1
  4. 怎么去除桌面图标显示快捷方式字样?
  5. JavaScript面向对象中的严格模式
  6. ssm整合(基于xml配置方式)
  7. 【云栖大会】基因计算:解读生命的力量
  8. 错误:因为相同类型的其他实体已具有相同的主键值。在使用 Attach 方法或者将实体的状态设置为 Unchanged 或 Modified 解决方法...
  9. sudo及其配置文件sudoers
  10. 2014 I/O归来:Google连接一切