Как разобрать вложенный объект JSON в Delphi XE2?

Я новичок в JSON, и у меня есть этот проект, который требует от меня разбора JSON и отображения части его содержимого в ListView. . Проблема в том, что документация, которую я уже читал, касается объектов JSON, содержащих массивы JSON, в то время как в моем случае речь идет о вложенных объектах. Короче говоря, вот резюме: я использую Delphi XE2 с DBXJSON. Я отправляю некоторые значения на сервер, и он отвечает объектом JSON, который выглядит следующим образом:

    {
    "products": {
        "Men's Sneakers": {
            "instock": false,
            "size": "423",
            "manufacturer": "Adidas",
            "lastcheck": "20120529"
        },
        "Purse": {
            "instock": true,
            "size": "not applicable",
            "manufacturer": "Prada",
            "lastcheck": "20120528"
        },
        "Men's Hood": {
            "instock": false,
            "size": "M",
            "manufacturer": "Generic",
            "lastcheck": "20120529"
       }
    },
   "total": 41,
   "available": 30
}

Я хотел добиться того, чтобы каждый элемент (например, кошелек) анализировался и добавлялся в качестве заголовка в список вместе с одним подэлементом ( производитель). Я создал процедуру, которая принимает строку JSON в качестве аргумента, создал объект JSON, но я не знаю, как дальше анализировать вложенные объекты.

procedure TForm1.ParseString(const AString: string);
var
  json          : TJSONObject;
  jPair         : TJSONPair;
  jValue        : TJSONValue;
  jcValue       : TJSONValue;
  l,i           : Integer;
begin
    json    := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(AString),0) as TJSONObject;
  try
    //get the pair to evaluate in this case the index is 1
    jPair   := json.Get(1); 
        {further process the nested objects and adding them to the listview}
  finally
     json.Free;
  end;
end;

Будем признательны за любые предложения. Потерял довольно много времени, пытаясь получить все тонкости JSON в Delphi, но безрезультатно.

Спасибо, сфинкс

15
задан Pateman 30 May 2012 в 12:09
поделиться