我目前正在评估gatling 3.3.1的用例,并且需要从服务器检索JSON数据,对其进行处理并将其发送回去。不幸的是,我遇到了一个有趣的路障,响应中包含空值。
我正在使用Jackson的ObjectMapper将值反序列化并序列化为@section Scripts {
<script>
var startDate;
var endDate;
var status;
var oTable;
$(document).ready(function () {
BindData();
$('#tblExample tbody').on('click', 'td.details-control', function ()
{
$('#tblExample tbody > tr').addClass('rowInactive');
debugger
var tr = $(this).closest('tr');
var row = oTable.row(tr);
$(tr).removeClass('rowInactive');
if (row.child.isShown()) {
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
$('#tblExample tbody > tr').removeClass('rowInactive');
}
else {
// Open this row
row.child(format(row.data())).show();
tr.addClass('shown');
}
var tr = $(this).closest('tr');
var row = oTable.row(tr);
//if (row.child.isShown()) {
// // This row is already open - close it
// row.child.hide();
// tr.removeClass('shown');
//}
//else {
// // Open this row
// row.child(format(row.data())).show();
// tr.addClass('shown');
//}
});
});
$('#btnSearch').click(function () {
startDate = $('#reportrange').data('daterangepicker').startDate.format("MM-DD-YYYY");
endDate = $('#reportrange').data('daterangepicker').endDate.format("MM-DD-YYYY");
status = $('#searchbystatus').val();
if ($.fn.DataTable.isDataTable("#tblExample")) {
$('#tblExample').DataTable().destroy();
}
BindData();
});
$(function () {
var start = moment().subtract(29, 'days');
var end = moment();
function cb(start, end) {
$('#reportrange span').html(start.format('MM-DD-YYYY') + ' To ' + end.format('MM-DD-YYYY'));
}
$('#reportrange').daterangepicker({
startDate: start,
showDropdowns: true,
endDate: end,
format: 'mmm-DD-YYYY',
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
}
}, cb);
cb(start, end);
});
function format(d) {
debugger
// `d` is the original data object for the row
if (d == undefined) {
html = ' <div style="text-align: center;">There is No City in <b>' + d.stateName + '</b> </div > ';
}
else if (d.companyRegionList == null)
html = ' <div style="text-align: center;">There is No City in <b>' + d.stateName + '</b> </div > ';
else {
var html = '<div class="table-responsive light-thead border-bottom-0">' +
'<table id="htmltable" class="table mb-0">' +
'<thead><tr">' +
'<th>CITY CODE</th>' +
'<th>CITY NAME</th>' +
'<th>DIRECTOR</th>' +
'<th>CONTACT</th>' +
'<th>STATUS</th>' +
'</tr></thead><tbody>';
for (let i in d.companyRegionList.companyList) {
html += '<div><tr><td>' + d.companyRegionList.companyList[i].code + '</td>';
html += '<td>' + d.companyRegionList.companyList[i].companyName + '</td>';
html += '<td>' + d.companyRegionList.companyList[i].companyDirector + '</td>';
html += '<td>' + d.companyRegionList.companyList[i].officePhone + '</td>';
html += '<td>' + d.companyRegionList.companyList[i].companyStatus + '</td></tr>';
}
}
html += '</tbody</table></div>';
return html;
}
function BindData() {
oTable = $('#tblExample').DataTable({
scrollY: false,
//destroy: true,
ordering: false,
paging: false,
searching: false,
info: false,
"autoWidth": true,
"ajax": {
"url": "/company/GetData",
"type": "Get",
"datatype": "json",
"dataSrc": "data",
"data": {
Status: status,
startDate: startDate,
endDate: endDate
}
},
columns: [
{ data: 'id', visible: false },
{ data: 'stateName' },
{ data: 'isRegion' },
{
data: 'regionDirector'
},
{ data: 'phoneNumber' },
{
data: 'email'
},
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent": '+'
}
],
destroy: true
});
}
</script>
}
:
HashMap[Object,Any]
有一个网站虚拟人可以尝试:https://webhook.site/7130d3d3-ddcc-4c36-8864-c3a6c4c13cf4
网络服务器返回:
scenario("scenario")
.exec(http("get")
.get(url)
.asJson
.check(jsonPath("$").saveAs("json")))
.exec(http("post")
.post(url)
.asJson
.body(StringBody("${json}")))
加特林脚本回显:
{
"name": "frodo",
"note": null
}
您看到,注释字段变为{
"name": "frodo",
"note": "null"
}
,而不是正确的"null"
。为什么会这样呢?有办法解决吗?难道我做错了什么?我缺少一些杰克逊的选择?