gpt4 book ai didi

json - 发现很难在 delphi 中处理 JSON

转载 作者:行者123 更新时间:2023-12-03 18:04:17 24 4
gpt4 key购买 nike

我目前正在开发一个应用程序,该应用程序将从 WoW 军械库中获取您的角色数据。示例字符:My WoW Character(link)

我将通过调用暴雪提供的 API 获得我想要的所有信息,我将获得 JSON 格式的响应。示例 JSON:JSON response for the character above(link)

起初我尝试通过字符串操作从 JSON 中获取数据。这意味着,拆分我的字符串,在字符串中搜索关键字以找到位置并将其格式化为单独的数据片段,例如天赋和统计数据。

这在开始时效果很好,但随着我需要更多数据,这变得更加困难,因为我在所有字符串上运行了很多函数,它变得模糊不清,不清楚我当时在做什么。

有没有好的方法来处理我的JSON?我正在考虑获取 JSON 并创建一个空类。在处理 JSON 时,它会生成属性并将值存储在其中。但我不知道是否以及如何动态生成属性。

将来我想获得更多数据,但首先我想先启动并运行它,然后再考虑它。

有人对此有任何想法/建议吗?

提前致谢。

最佳答案

您的 JSON 看起来相当简短和基本。您似乎不需要特殊的速度或奇特的功能。 http://jsonviewer.stack.hu/#http://eu.battle.net/api/wow/character/moonglade/Xaveak?fields=stats,talents

虽然从 Delphi XE2 开始,您确实拥有作为 DB-Express 套件的一部分的 JSON 解析器,但仍然存在一些问题:
1. 被告知会导致速度和可靠性的问题。
2. 它会让你的程序依赖于 DB-Express 包(为什么,如果你实际上不使用它来访问数据库?)3. 它将把你的 future 绑定(bind)到 Delphi 的企业版上。

所以你最好尝试一些 3rd 方库。

最快的可能是 Synopse JSON 解析器,它是其 mORMot library 的副项目.它通常是好的代码,非常注重速度,并且开发人员在他们的论坛上积极提供帮助。

另一个已知和使用的库是 Henri Gourvest 的 SuperObject。它声称是 the fastest parser对于 Delphi,虽然由于上述原因可能不再适用,但速度对于大多数任务来说已经足够了。 Henri 本人并没有积极支持他以前的项目,总是在做一些新的事情,所以 the scarce documentation (也在安装包中复制)将是您正式拥有的所有内容,加上 there is a forum其他用户可能会帮助您的地方。 OTOH SuperObject 设计背后的主要思想是统一性,虽然确实可以更好地记录某些任务 - 这主要是由于不确定性“如果这个任务真的可以在没有任何特殊处理的情况下工作”。但通常是这样。
附言。由于那是 wiki,您可以尝试为 future 的用户增强它;-)

所以回到文档,你需要

1) 将整个 JSON 加载到库中。您可以通过您的 http 库创建 TStream 或提供带有数据的字符串缓冲区来实现:即 the manual解析 JSON 数据结构部分

2) 读取“名称”和“级别”等值 - 在如何读取对象的属性值?部分中有描述。

3) 招募像“talents”这样的数组 - 在浏览数据结构部分有描述。

关于json - 发现很难在 delphi 中处理 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13912220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com