obj使用jquery格式化为json

时间:2015-05-08 00:48:27

标签: javascript jquery json parsing

我正在使用jqCloud插件生成文字云。此脚本依赖于以特定模式格式化的json。我试图将var msg解析为json,就像在var word_array

中一样
$(function() {
        var count = 3;
        $.wordStats.computeTopWords(count, $('body'));
        var msg = 'Top words:\n';
        for (var i = 0, j = $.wordStats.topWords.length; i < j && i <= count; i++) {
            msg += '\n' + $.wordStats.topWords[i].substring(1) + ': ' + $.wordStats.topWeights[i];
        }
        console.log(msg);
        //this is what gets printed in the console
        //Top words:
        //bag: 46
        //tote: 30
        //ugh: 30

        $.wordStats.clear();

        // I am trying to get var msg to spit out json
        // that is formatted like this

 var word_array = [{
                text: "Lorem",
                weight: 15
            }, {
                text: "Ipsum",
                weight: 9,
                link: "http://jquery.com/"
            }, {
                text: "Dolor",
                weight: 6,
                html: {
                    title: "I can haz any html attribute"
                }
            }
            // ...as many words as you want
        ];
        $('#example').jQCloud(word_array);

2 个答案:

答案 0 :(得分:2)

您正在手动创建字符串,这些字符串无法满足您的输出需求。

您要查找的数据结构是一个对象数组。这张地图应该可以满足您的需求

var word_array= $.wordStats.topWords.map(function(item, index){
    return { text: item.substring(1) , weight:  $.wordStats.topWeights[index] };
});

$('#example').jQCloud(word_array);

提示:永远不要尝试手动创建JSON ......它非常容易出错。创建数组和/或对象,如果你真的需要它作为JSON转换整个结构。在这种情况下,您需要一个实际的数组...而不是JSON

答案 1 :(得分:1)

您可以构建一个对象并在之后对其进行字符串化,尽管您可能不需要并且可以直接将对象提供给jQCloud。

    var json_obj = [];
    for (var i = 0, j = $.wordStats.topWords.length; i < j && i <= count; i++) {
        var w = {};
        w.text = $.wordStats.topWords[i].substring(1);
        w.weight = $.wordStats.topWeights[i];
        json_obj.push(w);
    }
    var msg = JSON.stringify(json_obj);