单表数据集序列化(自定义忽略字段和大小写)

 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"
                }
            ]
        }
    ]
}

 

posted on 2024-09-02 16:53  redhat588  阅读(46)  评论(0)    收藏  举报