Приветствую друзья. Получаю json с сайта и парсив его, заполняю табличку (listview).
код:
Код:
procedure TfMain.DataToLw;
var
I : Integer;
json : TJSONObject;
_rows : TJSONArray;
begin
ListView1.Items.Clear;
json := TJSONObject.ParseJSONValue(Utf8ToAnsi(MyData.DataString)) as TJSONObject;
_rows := json.GetValue('rows') As TJSONArray;
For I := 0 To _rows.Count-1 Do
Begin
ProductName := (_rows.Items[i] As TJSonObject).Values['name'].Value;
ProductIdСode := (_rows.Items[i] As TJSonObject).Values['code'].Value;
ProductPrice := (((_rows.Items[i] As TJSonObject).Values['salePrices'] As TJSonArray).Items[1] As TJSonObject).Values['value'].Value;
ProductPrice:=copy(ProductPrice,1,length(ProductPrice)-2);
ProductEan13 := (((_rows.Items[i] As TJSonObject).Values['barcodes'] As TJSonArray).Items[0] As TJSonObject).Values['ean13'].Value;
ProductData := (((_rows.Items[i] As TJSonObject).Values['attributes'] As TJSonArray).Items[0] As TJSonObject).Values['value'].Value;
FillList;
End;
json.Free;
end;
Код:
procedure TfMain.FillList;
var
item: TListItem;
begin
Item:=ListView1.Items.Add;
Item.Caption:=IntToStr(ListView1.Items.Count);
Item.SubItems.Add(ProductEan13);
Item.SubItems.Add(ProductName);
Item.SubItems.Add(ProductPrice);
Item.SubItems.Add(ProductData);
Item.SubItems.Add(ProductIdСode);
end;
Суть проблемы:
Если в получаемом json у одного объекта скажем отсутствует значение attributes
PHP код:
ProductData := (((_rows.Items[i] As TJSonObject).Values['attributes'] As TJSonArray).Items[0] As TJSonObject).Values['value'].Value;
, но у других оно есть, то список в listview не загружается. Как можно это обойти и если значения нет, то все-равно заполнять listview?