1

我正在尝试查看 2 个 html 表的元素:

<table class="content">
    <tbody>
        <tr>
            <th>head1</th>
            <td>value1</td>
        </tr>
        <tr>
            <th>head2</th>
            <td>value2</td>
        </tr>
    </tbody>
</table>
<table class="content">
    <tbody>
        <tr>
            <th>alpha1</th>
            <td>value4</td>
        </tr>
        <tr>
            <th>alpha2</th>
            <td>value5</td>
        </tr>
        <tr>
            <th>alpha3</th>
            <td>value6</td>
        </tr>
    </tbody>
</table>

使用jquery选择器或cheerio,我试图收集这些元素并将它们放在一个JSON对象中,其中文本元素将作为键和作为值,所以它看起来像这样

{head1: 'value1',head2: 'value2', alpha1: 'value4', alpha2: 'value5', alpha3: 'value6'}

我试图沿着

$('.content).map(function(i, el) {el=$(el).find('>th').text(); return el;}).get().join(',');

但由于 2 个同名表,它似乎给了我 2 个对象。感谢帮助,谢谢

4

1 回答 1

6

要生成具有以下结构的 JSON:

[{"head1": "value1"},{"head2": "value2"},{"alpha1": "value4"},{"alpha2": "value5"}, {"alpha3": "value6"}]

遍历表行并将对象推送到数组中:

function createJSON(){
    var self = this;
    self.thejson = [];
    $('.content tr').each(function(index, value){
        var k = $('th', this).text(), v = $('td', this).text();
        var data = {};
        data[k] = v;
        self.thejson.push(data);
    });
    return self.thejson;
}

http://jsfiddle.net/yEJPg/

编辑:操作最初将所需的 JSON 指定为对象数组,但此后将其更新为以下结构:

{
    "head1": "value1",
    "head2": "value2",
    "alpha1": "value4",
    "alpha2": "value5",
    "alpha3": "value6"
}

思路是一样的,但是这次我们将数据添加到对象中,而不是将对象添加到数组中:

function createJSON(){
    var self = this;
    self.thejson = {};
    $('.content tr').each(function(index, value){
        var k = $('th', this).text(), v = $('td', this).text();
        self.thejson[k] = v;
    });
    return self.thejson;
}

http://jsfiddle.net/waTQJ/

于 2014-05-26T09:11:56.260 回答