问题标签 [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.
json - 如何使用 DBXJSON 将字符串与带有转义/特殊字符的 JSON 相互转换?
我在将带有转义字符的字符串与 TJsonString 相互转换时遇到问题。(我使用的是 Delphi XE 2、Update 4、Hotfix 1)。
注意:我熟悉SuperObject,但我的要求是使用 DBXJSON 单元。
通过 ToString() 方法返回 JSON 表示时,似乎 TJSONString 未正确转义。
我做错了什么(如果有的话),如何正确地将带有特殊字符的字符串转换为正确的 JSON 表示形式/从正确的 JSON 表示形式转换?
也许我错过了一些东西,但以下问答似乎都没有直接解决这个问题:
- Delphi 解码 json/utf8 转义文本
- 适用于 XE2 的 Delphi JSON 库可用于对象序列化
- Delphi:JSON 数组
- 如何在 Delphi XE2 中解析嵌套的 JSON 对象?
- 使用 Delphi 2012 反序列化嵌套 json 对象
编辑:
事实证明,下面的示例确实按预期工作。
我不清楚的是,当通过其构造函数创建TJSONString 并将其添加到 TJSONObject 时,ToString() 方法将返回转义 表示。但是,在解析TJSONObject 之后,ToString() 方法将返回未转义的表示。
唯一需要注意的是,下面示例代码中的 EscapeString() 函数正在处理双引号。虽然我在这里没有使用双引号,但我的其他一些代码是,这导致解析失败,因为 TJSONString 已经转义了该字符。我更新了我的示例代码以从 EscapeString() 函数中删除此处理,这是我在自己的类中一直使用的。
再次感谢@Linas 的回答,这帮助我“得到”了它。
原始字符串值:
DBXJSON 产生的内容(无转义):
解析未转义的文本失败:
我期望DBXJSON产生什么:
Parsing ESCAPED Text ( INVALID )(使用JSONLint验证的要解析的文本):
我注意到唯一能正确处理的特殊字符 TJSONString 是双引号 (")。
这是我正在使用的代码:
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 的函数并且它们都显示错误。
谢谢
json - 使用超对象或 DBXJSON 创建正确的 JSON 文件时出现问题
我正在使用 Delphi XE2,我有这个 json 结构要创建:
我用超级对象做了几次测试,但还没有得到正确的结果,因为我得到的数组的第一个元素等于第二个。我的困难在于迭代和优化。这是我正在处理的代码:。
delphi - Delphi XE5 DBXJSon TJSONArray 泄漏
我在计时器循环中刷新 DBXJSON TJSONArray,但我检测到我的算法泄漏内存,我怀疑我没有以正确的方式使用库。这里有什么问题?
我需要重新加载 Array COMANDASTOT ,该数组由其他线程使用,这些线程使用它们来替换数据和获取数据。
想法是更新存储在 TJSONArray 中的信息,但是当我更新数组时,这开始泄漏
谢谢!