js调用datasnap rest server
场景:
有嵌套的多层json数据结构的变量,js通过post调用 datasnap rest server,会出现问题:
var json = [{
stcd: system.sn,
dateTime: dateTimeStr,
stnm: system.stnm,
lgtd: system.lgtd,
lttd: system.lttd,
stlc: system.stlc,
mydata: { "test_key": "test_value" } // 简化结构
}];
var request = { type: 'text', // 指定为纯文本请求
headers: { Authorization: 'Basic ' + btoa('xxxxx:yyyyy'), 'Content-Type': 'application/json; charset=UTF-8' },
data: json
};
var resp = API.httpPost(url, request, 10);
API.log('API Response: ' + JSON.stringify(resp));
=====================
返回:mydata是null
[2024-10-26 19:57:07 017] post返回:{"code":"99913","resp":""}
要求:传送到api是字符串json。而js的 JSON.stringify()带有多层就会出现问题,api解析不了。所以每一层都要通过JSON.stringify()转换。
var json = [{ stcd: system.sn, mydata: JSON.stringify([{ "key": "test_key", "value": "test_value" }]) }]; 然后: var request = { type: 'json', headers: { Authorization: authHeader, 'Content-Type': 'application/json; charset=UTF-8' }, data: JSON.stringify(json) }; API.httpPost(url, JSON.stringify(request), 10);