使用RAD Studio将字符串转换为JSON时出错
我有一个问题: 我接收以下格式的字符串:使用RAD Studio将字符串转换为JSON时出错,json,delphi,delphi-xe,Json,Delphi,Delphi Xe,我有一个问题: 我接收以下格式的字符串: { { "name":"j1", "type":"12" }, { "name":"j2", "type":"15" }, ..... } 我想读数据 如get(“name”)和get(type)读取所有数据值并显示 j1 12 j2 15 J323等等 我正在使用RAD studio,firemonkey用于移动设备 我编写这段代码是为了将字符串解
{
{
"name":"j1",
"type":"12"
},
{
"name":"j2",
"type":"15"
},
.....
}
我想读数据
如get(“name”)和get(type)读取所有数据值并显示
j1 12
j2 15
J323等等
我正在使用RAD studio,firemonkey用于移动设备
我编写这段代码是为了将字符串解析为JSON并读取它
jo: TJSONObject;
jp: TJSONPair;
va1:TJSONvalue;
va2:TJSONvalue;
jo:= TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(a),0) as TJSONObject;
jp := jo.Get(1);
for i := 0 to jo.Size - 1 do
begin
jp := jo.Get(i);
Memo1.Lines.Add('ToString: ' + jp.ToString);
Memo1.Lines.Add('JsonString: ' + jp.JsonString.Value);
if (jp.JSONValue is TJSONTrue) or
(jp.JSONValue is TJSONFalse) or
(jp.JSONValue is TJSONNull) then
Memo1.Lines.Add('JsonValue: ' + jp.JsonValue.ToString)
else
Memo1.Lines.Add('JsonValue: ' + jp.JsonValue.Value)
end;
当程序执行jp:=jo.Get(1)时代码>我有此错误“地址53605374访问地址0000013C时发生访问冲突”
我试过其他方法。。。但是我还没能解开这个谜团。据我所知,这不是一个有效的json
有效的json(已验证)是:
[
{
“名称”:“j1”,
“类型”:“12”
},
{
“名称”:“j2”,
“类型”:“15”
},
.....
]
或
{
数据:[
{
“名称”:“j1”,
“类型”:“12”
},
{
“名称”:“j2”,
“类型”:“15”
},
.....
]
}
我认为这不是有效的JSON,因此您可能需要自己解析它。或者至少在发送到TJSONObject之前先对其进行一点操作。想想当jo.Size
小于2时会发生什么jo.Get(1)
将无效。我对这些编码不太熟悉,但我认为JSON通常是UTF-8,所以我不理解TEncoding.ASCII.GetBytes(a),
。但大卫达是对的。这不是有效的JSON。你确定你抄对了吗?如果外部大括号为方括号,则该选项有效。在这种情况下,将有一个包含两个对象的数组。