版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rocklee/article/details/81871877
public static FreeStyle.D365Tools.GMap getCursorValues(Common _table,Map pvSchema)
{
FreeStyle.D365Tools.GMap lvMap=FreeStyle.D365Tools.ObjectBuilder::CreateMap();
MapEnumerator en=new MapEnumerator(pvSchema);
while (en.moveNext())
{
lvMap.Add(en.currentKey(),_table.(en.currentValue()));
}
return lvMap;
}
...
/// <summary>
/// Runs the class with the specified arguments.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static void main(Args _args)
{
//TestIntegration::testJson();
AEL_rnote_appr_template _master;
Map lvFieldItems=null;
int lvCC=0;
FreeStyle.D365Tools.JSONResponse lvJsonObject=FreeStyle.D365Tools.ObjectBuilder::CreateJSONResponse();
FreeStyle.D365Tools.GMapList lvGList=FreeStyle.D365Tools.ObjectBuilder::CreateMapList();
lvJsonObject.result=lvGList;
while select _master order by _master.fc_note_type
{
if (!lvFieldItems)
{
//lvFieldItems=TestIntegration::getTableSchema(_master);
lvFieldItems=new Map(Types::String,Types::AnyType);
lvFieldItems.insert("fc_note_type",fieldName2Id(_master.TableId,"fc_note_type"));
lvFieldItems.insert("fc_last_step",fieldName2Id(_master.TableId,"fc_last_step"));
}
lvCC++;
FreeStyle.D365Tools.GMap lvFieldValues=TestIntegration::getCursorValues(_master,lvFieldItems);
lvGList.Add(lvFieldValues);
}
info(FreeStyle.D365Tools.JsonConverter::serialize(lvJsonObject));
}
而通用的JSONResponse的类:
public class JSONResponse
{
public int errCode = 0;
public string errMsg = "";
public Object result = null;
}
运行上面例子,返回json string:
{"errCode":0,"errMsg":"","result":[{"fc_last_step":4,"fc_note_type":"AS"},{"fc_last_step":5,"fc_note_type":"IR"},{"fc_last_step":2,"fc_note_type":"LR"},{"fc_last_step":0,"fc_note_type":"PS"}]}
Dynamics 365的webservice应用与第三方client的通讯,常常会用到json格式来传输数据, 但X++对json几乎不提供支持, 通过FreeStyle.D365Tools工具集可满足要求 。上述示例将AEL_rnote_appr_template所有记录用JSONResponse封装并以json格式返回。