试试这个样本
{$APPTYPE CONSOLE}{$R *.res}uses DBXJSON, System.SysUtils;ConstStrJson='{'+' "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'+'}';procedure ParseJson;var LJsonObj : TJSONObject; LJPair : TJSONPair; LProducts : TJSONValue; LProduct : TJSONValue; LItem : TJSONValue; LIndex : Integer; LSize : Integer;begin LJsonObj := TJSONObject.ParseJSonValue(TEncoding.ASCII.GetBytes(StrJson),0) as TJSONObject; try LProducts:=LJsonObj.Get('products').JsonValue; LSize:=TJSonArray(LProducts).Size; for LIndex:=0 to LSize-1 do begin LProduct := TJSonArray(LProducts).Get(LIndex); LJPair := TJSonPair(LProduct); Writeln(Format('Product Name %s',[LJPair.JsonString.Value])); for LItem in TJSonArray(LJPair.JsonValue) do beginif TJSonPair(LItem).JsonValue is TJSonFalse then Writeln(Format(' %s : %s',[TJSonPair(LItem).JsonString.Value, 'false']))elseif TJSonPair(LItem).JsonValue is TJSonTrue then Writeln(Format(' %s : %s',[TJSonPair(LItem).JsonString.Value, 'true']))else Writeln(Format(' %s : %s',[TJSonPair(LItem).JsonString.Value, TJSonPair(LItem).JsonValue.Value])); end; end; finally LJsonObj.Free; end;end;begin try ParseJson; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; Readln;end.这将返回
Product Name Men's Sneakers instock : false size : 423 manufacturer : Adidas lastcheck : 20120529Product Name Purse instock : true size : not applicable manufacturer : Prada lastcheck : 20120528Product Name Men's Hood instock : false size : M manufacturer : Generic lastcheck : 20120529



