- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Delphi 7 中的 SuperObject 解析该字符串。
procedure TForm1.btn1Click(Sender: TObject);
var
obj: ISuperObject;
fw:string;
begin
fw:= '{"type":"normal","info":{"Name":"frank","Number":"01","Age":"21","registered":"Yes","Support":"Expired"}}';
obj := TSuperObject.ParseString(PWideChar(fw), false);
mmo1.lines.Add(obj.AsJSon(true,false));
end;
但是备忘录中的结果是这样的:
"????????????????????????????????????????????????????}"
我做错了什么?
最佳答案
fw 是一个字符串,在 Delphi 7 中是 8 位 ANSI 编码的。因此,转换为 PWideChar 是不正确的。它将把 8 位文本视为 UTF-16 编码。
如果您调用的函数确实接收了 PWideChar,那么您需要先转换为 UTF-16。例如这样:
PWideChar(WideString(fw))
<小时/>
您还报告了 super 对象代码中出现的一个单独问题。具体来说这行代码:
h := h*129 + ord(k[i]) + $9e370001;
引发溢出错误。
发生这种情况是因为您的项目启用了溢出检查选项(这样做的好习惯),但 super 对象代码是在禁用该选项的假设下编写的。这确实是 super 对象代码中的一个缺陷。您可以通过添加 {$OVERFLOWCHECKS OFF}
禁用 super 对象代码中的溢出检查来解决此问题。理想情况下,仅针对故意溢出的代码在本地禁用此功能。但是,除非您完全理解代码,否则将 {$OVERFLOWCHECKS OFF}
填充到单元顶部并继续前进可能会更容易。
现在,我正在查看最新的 super 对象代码,单元顶部是 {$OVERFLOWCHECKS OFF}
。所以我想知道您是否可能使用过时版本的代码。从存储库中提取最新版本。
关于json - 当我使用 SuperObject 解析字符串时,为什么会出现大量问号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18915881/
一些 JSON 序列化器返回 null对于空字符串数据字段,例如 { "searchtext": null, "moretext": "contains something", "bookdat
如何从通用 JSON 获取所有“id”成员值。 不知道它的结构。因为它非常复杂并且有很多子对象。它必须循环遍历所有子对象。 再次针对那些不断询问示例 JSON 在哪里的人。我的问题是如何从包含此成员的
我正在使用 Delphi XE4 和 SuperObject 1.24 我有以下结构: type TMyArray = Array of Array of Variant; TMyRecord
我正在尝试使用 super 对象在类中调用一个过程,但它不起作用,我在这里做错了什么? 代码示例: program test_rpc; {$IFDEF FPC} {$MODE OBJFPC}{$H
我正在使用 SuperObject 生成 JSON。我正在使用的服务器有一些对数据结果进行排序的规范(这与数据排序相关的事实与我关于排序的实际问题无关)。问题是,服务器希望这些值按照排序方式列出,例如
我最近在解析 JSON 时遇到了困难。您会看到,在使用 CloudFlare 客户端接口(interface) API 时,我想查找特定 IP 的“威胁评级”。问题是,由于 API 的设计,格式是这样
我广泛使用 SuperObject JSON 库。我需要能够检查对象中是否存在特定元素。我可以检查元素的值,例如不存在的整数返回 0。但是,如果 0 确实存在,则它是可能的值之一 - 因此我不能依赖于
我的服务器有以下 JSON: { "userid":"12", "username":"TestChar", "logged":"yes", "status":"Premium
我有以下代码来序列化动态类数组。由于某种原因,SuperObject 序列化的是私有(private)变量而不是类属性名称。任何人都可以建议如何修复 SuperObject 中的此行为吗? class
类型: TData = record str: string; int: Integer; boo: Boolean; flt: Double; end; TDataArray = A
我有一个带有一些 TObjectList<> 字段的对象,我尝试使用帮助表单 SuperObject 将其编码为 JSON . TLogs = TObjectList; TMyObject = cla
我正在使用 SuperObject 创建和操作 JSON 中的简单层次结构。 我的目标是将一组对象 {"id":..., "name":..., "parent":...} 转换为层次结构。示例: 我
我正在尝试使用 Delphi 7 中的 SuperObject 解析该字符串。 procedure TForm1.btn1Click(Sender: TObject); var obj: ISupe
我在我的一个项目中使用这个 super 对象单元作为 rpc 协议(protocol),在一个远程调用过程中(签名有一个 var Result arg)我想知道如何使用那个 arg... 没有文档吗?
我最近从使用 ULKJson 切换到 SuperObject,我一直在查看软件包附带的示例,并在大多数方面取得了一些进展,但似乎我遇到了一个障碍。更具体地说,我似乎找不到一个示例来展示如何访问数组中的
正如标题所示,我正在尝试使用 Delphi 7 和 SuperObject 库从结构非常简单的 JSON 文件中提取值,但我还没有找到涵盖这个最基本主题的任何示例,并希望一些大师能够提供帮助这里也许可
使用 SuperObject 库时,单个 JSON 对象当前缩进如下: { "name": "value", "int_arr": [ 1,2,3], "obj_arr": [ {
我想从这个 json 中获取所有用户。 { "status": "ok", "next_max_id": "AQAmA1l9NAQXa", "sections": [ {
我使用 SuperObject 库来处理 JSON。 我有这个 JSON(Mozilla FireFox、Chrome 书签文件的一部分): "roots": { "bookmark
我正在使用 Delphi 2010 和 superobject 库。 我已经了解如何解析 json 文件,但我不知道如何创建 json? 算法是: 解析 JSON 并加载到 TStringGrid 添
我是一名优秀的程序员,十分优秀!