我最近开发了一种接受这种格式的json数据的休息服务
{
"foods": "food1, food2, food3",
"qty": "1,2,3"
}
但是我的javascript生成了这种格式
["food1","1","food2","2","food3","3"]
我在php写了我的休息
数据来自此表格
<tbody id="tr">
<tr>
<td class="data">food1</td>
<td class="data">1</td>
<td>
<div class="col-sm-1">
<button type="button" class="btn btn-danger removethisfood">-</button>
</div>
</td>
</tr>
<tr>
<td class="data">food1</td>
<td class="data">1</td>
<td>
<div class="col-sm-1">
<button type="button" class="btn btn-danger removethisfood">-</button>
</div>
</td>
</tr>
<tr>
<td class="data">food1</td>
<td class="data">1</td>
<td>
<div class="col-sm-1">
<button type="button" class="btn btn-danger removethisfood">-</button>
</div>
</td>
</tr>
</tbody>
我的java脚本代码
var tbl = $('#tr').map(function() {
return $(this).find('td.data').map(function() {
return $(this).html();
}).get();
}).get();
console.log(JSON.stringify(tbl));
答案 0 :(得分:0)
您可以通过循环遍历每个tr
并将相关td
的文本添加到数组中来实现所需的格式,然后通过将数组的文本连接在一起构建最终对象,类似于这样:
var foods = [], qty = [];
$('tr').each(function() {
var $row = $(this);
foods.push($row.find('td:eq(0)').text());
qty.push($row.find('td:eq(1)').text());
})
var obj = {
foods: foods.join(','),
qty: qty.join(',')
};
也就是说,为了清晰和简化序列化/反序列化,可以改进JSON格式。发送一个包含在一个对象中的每个项目的数组更有意义,参数是它的名称和数量,如下所示:
var obj = $('tr').map(function() {
var $row = $(this);
return {
food: $row.find('td:eq(0)').text(),
qty: $row.find('td:eq(1)').text()
}
}).get()
此输出如下所示:
[{
"food": "food1",
"qty": "1"
},{
"food": "food2",
"qty": "1"
},{
"food": "food3",
"qty": "1"
}]