QJsonObject构建指定的JSON结构

        如今我们生活处处用到AI,AI 带给了我们很多方便,但作为程序员我们,虽然不能开发什么 AI,但时不时需要调用国内四大平台的AI接口。很多平台接口都是用JSON作为数据载体传送。

如下接口数据 ,有些人不知道怎么构建。

1,我们先以QJsonObject 构建 "messages": [ {"role": "user","content": "你好"}] 为例。

#include <QJsonArray>
#include <QJsonObject>

// 创建一个QJsonObject实例
QJsonObject jsonObject;

// 创建一个QJsonArray用于存放messages
QJsonArray messagesArray;

// 为messages数组添加一个对象
QJsonObject messageObject;
messageObject.insert("role", QJsonValue("user"));
messageObject.insert("content", QJsonValue("介绍一下北京"));

// 将该对象添加到数组中
messagesArray.append(messageObject);

// 将messages数组放入jsonObject
jsonObject.insert("messages", messagesArray);

// 现在jsonObject包含了所需的结构
// 可以进一步处理这个json对象,比如转换为字符串或者发送到网络等
QString jsonString = QJsonDocument(jsonObject).toJson(QJsonDocument::Compact);

2,分析代码

        这段代码首先定义了一个QJsonObject󠁪,然后创建了一个QJsonArray󠁪来存储多条消息。接着,为每条消息创建了一个QJsonObject󠁪,并设置了"role"和"content"键值对。最后,将消息对象加入到数组中,并将这个数组添加到最外层的json对象里。这样就构建出了你所需要的JSON结构。

3,返回文章第一个问题。

很简单,只要在// 将该对象添加到数组中
messagesArray.append(messageObject);后面接着构建

#include <QJsonArray>
#include <QJsonObject>

// 创建一个QJsonObject实例
QJsonObject jsonObject;

// 创建一个QJsonArray用于存放messages
QJsonArray messagesArray;

// 为messages数组添加一个对象
QJsonObject messageObject;
messageObject.insert("role", QJsonValue("user"));
messageObject.insert("content", QJsonValue("介绍一下北京"));

QJsonObject messageObject2;
messageObject2.insert("role", QJsonValue("user"));
messageObject2.insert("content", QJsonValue("北京,简称“京”,古称燕京、北平,中华民族的发祥地之一,是中华人民共和国首都、直辖市、国家中心城市、超大城市,也是国务院批复确定的中国政治中心、文化中心、国际交往中心、科技创新中心,中国历史文化名城和古都之一,世界一线城市。\n\n北京被世界城市研究机构评为世界一线城市,联合国报告指出北京市人类发展指数居中国城市第二位。北京市成功举办夏奥会与冬奥会,成为全世界第一个“双奥之城”。北京有着3000余年的建城史和850余年的建都史,是全球拥有世界遗产(7处)最多的城市。\n\n北京是一个充满活力和创新精神的城市,也是中国传统文化与现代文明的交汇点。在这里,你可以看到古老的四合院、传统的胡同、雄伟的长城和现代化的高楼大厦交相辉映。此外,北京还拥有丰富的美食文化,如烤鸭、炸酱面等,以及各种传统艺术表演,如京剧、相声等。\n\n总的来说,北京是一个充满魅力和活力的城市,无论你是历史爱好者、美食家还是现代都市人,都能在这里找到属于自己的乐趣和归属感。"));

//....
//....
// 将该对象添加到数组中
messagesArray.append(messageObject);
// 将该对象添加到数组中
messagesArray.append(messageObject2);
//......

// 将messages数组放入jsonObject
jsonObject.insert("messages", messagesArray);
//...
//这里可以增加其他字段,非数组
jsonObject.insert("xx", "xx");

// 现在jsonObject包含了所需的结构
// 可以进一步处理这个json对象,比如转换为字符串或者发送到网络等
QString jsonString = QJsonDocument(jsonObject).toJson(QJsonDocument::Compact);

总结:是不是很简单。

1)JSON字符串还原为结构体; 2)访问结构体的字段值; 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)); 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]); // 咏南中间件 end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十启树

您的认可是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值