A:天软和python都能支持json串,在交互过程中,可以通过json串作为数据转换的桥梁,解决编码不一致及数据类型不匹配等的问题。
交互文档:FAQ:
2019-05-08-应用专题-第三方交互07:天软平台和PYTHON的交互
Json转码方式:FAQ:
Q:在天软将结果转换成Json串返回到python中解决转码引起的效率低下问题
使用案例:
天软相关函数简介:
ExportJsonString(data:Any):String,将天软数据结构转换为Json串;
ImportJsonString(data:String):Any,将Json串转换为天软数据结构。
应用范例:
范例01:python中调用天软函数
天软代码:封装函数get_testtable,并给出数据参数接口
Function get_testtable(data);
Begin
{
data: json字符串 源数据
}
//json串转天软数据类型
data:=importjsonstring(data);
t:=select *,
specall(array(close(),vol(),StockZf3()),array(pn_stock():["stock"],pn_date():StrToDate(["date"]))) as "info"
from data end;
t[:,array("close","vol","soockzf")]:=t[:,"info"];
deletefield(t,"info");
//导出天软数据转json串解决字符编码问题
t:=exportjsonstring(t);
return t;
End;
Python代码:执行交互命令,获取指定代码列表行情信息
import json
import pandas as pd
import sys
import TSLPy3 as ts
sys.path.append("C:\Program Files\Tinysoft\Analyse.NET")
stk=pd.DataFrame({"stock":["SZ000001","SZ000002","SZ000016"],"date":["2022-04-01","2022-04-01","2022-04-01"]})
# dataframe转json串传参
stk=stk.to_json(orient='records')
#交互
ts.DefaultConnectAndLogin("jh_test")#远程登录,用自己配置的别名或其他方式登录
dt=ts.RemoteCallFunc("get_testtable",[stk],{})
# 读取json格式数据
data=json.loads(dt[1])
print(pd.DataFrame(data))
执行结果:
范例02:python中执行天软脚本
Python代码:获取指定代码列表行情信息
import json
import pandas as pd
import sys
import TSLPy3 as ts
sys.path.append("C:\Program Files\Tinysoft\Analyse.NET")
stk=pd.DataFrame({"stock":["SZ000001","SZ000002","SZ000016"],"date":["2022-04-01","2022-04-01","2022-04-01"]})
# dataframe转json串传参
stk=stk.to_json(orient='records')
#交互
ts.DefaultConnectAndLogin("jh_test")#远程登录,用自己配置的别名或其他方式登录
ts_str='''
//json串转天软数据类型
data:=importjsonstring('%s');
t:=select *,
specall(array(close(),vol(),StockZf3()),array(pn_stock():["stock"],pn_date():StrToDate(["date"]))) as "info"
from data end;
t[:,array("close","vol","soockzf")]:=t[:,"info"];
deletefield(t,"info");
//导出天软数据转json串解决字符编码问题
t:=exportjsonstring(t);
return t;
'''%stk
dt=ts.RemoteExecute(ts_str,{})
# 读取json格式数据
data=json.loads(dt[1])
print(pd.DataFrame(data))
执行结果:
