德尔福。解析JSON

时间:2014-09-08 15:45:14

标签: json delphi

我试图解析JSON字符串(http://pastebin.com/zXn8pwtL):

sListing包含JSON字符串

jsObj: TJSONObject;
jsItem, jsElem, jsAsserts: TJSONValue;
...
jsObj := TJSONObject.ParseJSONValue(sListing) as TJSONObject;
jsAsserts := TJSONObject(TJSONObject(jsObj.Get('assets').JsonValue).Get('730').JsonValue).Get('2').JsonValue;

for jsElem in TJSONArray(jsAsserts) do
  WriteLn(jsElem.ToString);

如何从jsElem->描述中获取所有值?我试图让所有人都知道:

for jsItem in TJSONArray(jsElem) do
  WriteLn(jsItem.ToString);

但得到了EAccessViolation Read of address 00000001

1 个答案:

答案 0 :(得分:1)

确定。谢谢大家。这是对JSON类型的一些误解。现在修复了:

jsAsserts: TJSONObject;
jsDesc: TJSONArray;
iCurEl: integer;
jsItem: TJSONPair;
...
jsAsserts := TJSONObject(TJSONObject(jsObj.Get('assets').JsonValue).Get('730').JsonValue).Get('2').JsonValue as TJSONObject;
for iCurEl := 0 to jsAsserts.Count - 1 do
  begin
    jsItem := jsAsserts.Pairs[iCurEl];
    jsDesc := (jsItem.JsonValue as TJSONObject).Get('descriptions').JsonValue as TJSONArray;
    WriteLn(jsDesc.ToString);
  end;