问题标签 [dbxjson]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
26596 浏览

json - 如何使用 DBXJSON 将字符串与带有转义/特殊字符的 JSON 相互转换?

我在将带有转义字符的字符串与 TJsonString 相互转换遇到问题。(我使用的是 Delphi XE 2、Update 4、Hotfix 1)。

注意:我熟悉SuperObject,但我的要求是使用 DBXJSON 单元。

通过 ToString() 方法返回 JSON 表示时,似乎 TJSONString 未正确转义。

我做错了什么(如果有的话),如何正确地将带有特殊字符的字符串转换为正确的 JSON 表示形式/从正确的 JSON 表示形式转换?

也许我错过了一些东西,但以下问答似乎都没有直接解决这个问题:

编辑:

事实证明,下面的示例确实按预期工作。

我不清楚的是,当通过其构造函数创建TJSONString 并将其添加到 TJSONObject 时,ToString() 方法将返回转义 表示。但是,在解析TJSONObject 之后,ToString() 方法将返回未转义的表示。

唯一需要注意的是,下面示例代码中的 EscapeString() 函数正在处理双引号。虽然我在这里没有使用双引号,但我的其他一些代码是,这导致解析失败,因为 TJSONString 已经转义了该字符。我更新了我的示例代码以从 EscapeString() 函数中删除此处理,这是我在自己的类中一直使用的。

再次感谢@Linas 的回答,这帮助我“得到”了它。

原始字符串值:

DBXJSON 产生的内容(无转义):

解析未转义的文本失败

我期望DBXJSON产生什么:

Parsing ESCAPED Text ( INVALID )(使用JSONLint验证的要解析的文本):

我注意到唯一能正确处理的特殊字符 TJSONString 是双引号 (")。

这是我正在使用的代码:

0 投票
0 回答
698 浏览

delphi - Delphi XE3 DBXJSON 问题

我们让 Datasnap 服务器与 Delphi XE2 一起工作,但现在我们升级到 Delphi XE3,出现了以下问题:

例如,此函数接收 JSON 并返回它。

如果您提出如下请求:

在 Delphi XE2 中:{"result":["\"{\u201Cinode\u201D:\u201D221\u201D,\u201Ditdmov\u201D:\u201D22\u201D}\""]}

在 Delphi XE3 中:{“错误”:“模块 'Project1.exe' 中地址 00660588 的访问冲突。读取地址 49F99879”}

我希望有人可以帮助我们解决这个问题,因为我们有数百个接收 TJSONObject 的函数并且它们都显示错误。

谢谢

0 投票
2 回答
1980 浏览

json - 使用超对象或 DBXJSON 创建正确的 JSON 文件时出现问题

我正在使用 Delphi XE2,我有这个 json 结构要创建:

我用超级对象做了几次测试,但还没有得到正确的结果,因为我得到的数组的第一个元素等于第二个。我的困难在于迭代和优化。这是我正在处理的代码:。

0 投票
0 回答
849 浏览

delphi - Delphi XE5 DBXJSon TJSONArray 泄漏

我在计时器循环中刷新 DBXJSON TJSONArray,但我检测到我的算法泄漏内存,我怀疑我没有以正确的方式使用库。这里有什么问题?

我需要重新加载 Array COMANDASTOT ,该数组由其他线程使用,这些线程使用它们来替换数据和获取数据。

想法是更新存储在 TJSONArray 中的信息,但是当我更新数组时,这开始泄漏

谢谢!