3

Eclipse IDE 的新用户,我想console.log()将字符串打印到 logcat 面板,这很棒。但是当我尝试console.log()一个对象(而不是字符串文字)时,我在控制台中看到的只是[object object]。

我现在正在console.log(JSON.stringify(MyObject))解决这个问题,它适用于一个简单的对象,但是,如果对象太复杂,字符串会在某些时候被截断,这使我的调试变得更加困难。

是否有一种巧妙的方法可以在控制台面板中使用漂亮的树视图检查对象,就像您在 Chrome 开发人员工具中获得的一样(可扩展的树视图总是更容易处理 json 字符串)?

值得一提的是,我正在为 Android 做 PhoneGap 开发。所以基本上我只处理 HTML 和 Javascript。System.out.println 对我不起作用。

*另外,我也知道Weinre for PhoneGap。但我只是在本地 IDE 中寻找解决方案,因为 Web 调试对我来说太滞后了。

谢谢

4

1 回答 1

3

您可以编写自己的控制台“树”记录器并将其包含在您的源代码中。一个简单的例子如下:

function logObject(obj)
{
    var ind = "";
    if (arguments.length > 1)
    {
        ind = arguments[1];
    }

    if (typeof obj == "undefined" || obj == null)
    {
        console.log("<null>");
        return;
    }

    if (typeof obj != "object")
    {
        console.log(obj);
        return;
    }

    for (var key in obj)
    {
        if (typeof obj[key] == "object")
        {
            console.log(ind + key + "={");
            logObject(obj[key], ind + "  ");
            console.log(ind + "}");
        }
        else
        {
            console.log(ind + key + "=" + obj[key]);
        }
    }
}

使用示例:

var a = [1, 2, 3];
var o = {a:1, b:2, c:3, d: a};
var obj = {a:1, b:o, c:3, d: a};

logObject(obj);

结果在控制台或 LogCat 中将如下所示:

a=1
b={
  a=1
  b=2
  c=3
  d={
    0=1
    1=2
    2=3
  }
}
c=3
d={
  0=1
  1=2
  2=3
}

干杯

于 2013-04-08T21:21:01.050 回答