我试图解析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
答案 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;