使用RAD Studio将字符串转换为JSON时出错

时间:2014-04-21 14:44:42

标签: json delphi delphi-xe

我有这个问题:

我用这种格式重现字符串:

{
    {
        "name":"j1",
        "type":"12"
    },
    {
        "name":"j2",
        "type":"15"
    },
    .....
}

我想阅读数据 喜欢get(" name")和get(type)来读取所有数据值并显示如

j1 12 j2 15 j3 23等等

我正在使用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"

我尝试过其他方式......但我无法解开这个谜团。

1 个答案:

答案 0 :(得分:2)

根据json.org,这不是一个有效的json。

有效的json(经过验证的online)将是:

[
  {
    "name":"j1",
    "type":"12"
  },
  {
    "name":"j2",
    "type":"15"
  },
  .....
]

或者

{
  data: [
    {
      "name":"j1",
      "type":"12"
    },
    {
      "name":"j2",
      "type":"15"
    },
    .....
    ]
}