单表数据集序列化(自定义忽略字段和大小写)
1 procedure TDBDemoController.DataSetTOJsonDemo1; 2 var 3 MasterDBHelper: TDBHelper; 4 ADefIgnoredFields: TMVCIgnoredList; 5 begin 6 ADefIgnoredFields := ['COMPANY', 'CREATOR', 'UDF01', 'UDF02', 'UDF03', 'UDF04', 'UDF05', 'UDF06', 'UDF07', 'UDF08', 'UDF09', 'UDF10', 'UDF11', 'udf12']; 7 8 MasterDBHelper := TDBHelper.Create('demo'); 9 try 10 MasterDBHelper.Query.sql.Text := ' SELECT TOP 2 MA001,MA002,MA003 FROM COPMA '; 11 MasterDBHelper.Query.Prepared; 12 MasterDBHelper.Query.Open; 13 try 14 if not MasterDBHelper.Query.Eof then 15 begin 16 Render(ObjectDict(False).Add('data', MasterDBHelper.Query, 17 procedure(const DS: TDataset; const Links: IMVCLinks) 18 begin 19 Links.AddRefLink.Add(HATEOAS.HREF, '/customers/' + DS.FieldByName('MA002').AsString).Add(HATEOAS.REL, 'self').Add(HATEOAS._TYPE, 'application/json'); 20 end 21 , dstAllRecords, ncLowerCase, ADefIgnoredFields)); 22 end 23 else 24 raise EMVCException.Create(HTTP_STATUS.NotFound, 'Not Found'); 25 except 26 on E: Exception do 27 raise EMVCException.Create(HTTP_STATUS.NotFound, '错误'); 28 end; 29 30 finally 31 FreeAndNil(MasterDBHelper); 32 end; 33 34 end;
序列化格式:
"data": [ { "ma001": "101", "ma002": "辛潮家居", "ma003": "上海辛潮家居有限公司", "links": [ { "href": "/customers/辛潮家居", "type": "application/json", "rel": "self" } ] }, { "ma001": "102", "ma002": "百安居", "ma003": "百安居", "links": [ { "href": "/customers/百安居", "type": "application/json", "rel": "self" } ] } ] }
中年大叔学Delphi