使用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。你确定你抄对了吗?如果外部大括号为方括号,则该选项有效。在这种情况下,将有一个包含两个对象的数组。