我想看看一个对象,类似于php中的{
"usage": [
"<command> [<args>] [<options>]"
],
"commands": {
"cache": "Manage bower cache",
"help": "Display help information about Bower",
"home": "Opens a package homepage into your favorite browser",
"info": "Info of a particular package",
"init": "Interactively create a bower.json file",
"install": "Install a package locally",
"link": "Symlink a package folder",
"list": "List local packages - and possible updates",
"login": "Authenticate with GitHub and store credentials",
"lookup": "Look up a package URL by name",
"prune": "Removes local extraneous packages",
"register": "Register a package",
"search": "Search for a package by name",
"update": "Update a local package",
"uninstall": "Remove a local package",
"unregister": "Remove a package from the registry",
"version": "Bump a package version"
},
"options": [
{
"shorthand": "-f",
"flag": "--force",
"description": "Makes various commands more forceful"
},
{
"shorthand": "-j",
"flag": "--json",
"description": "Output consumable JSON"
},
{
"shorthand": "-l",
"flag": "--loglevel",
"description": "What level of logs to report"
},
{
"shorthand": "-o",
"flag": "--offline",
"description": "Do not hit the network"
},
{
"shorthand": "-q",
"flag": "--quiet",
"description": "Only output important information"
},
{
"shorthand": "-s",
"flag": "--silent",
"description": "Do not output anything, besides errors"
},
{
"shorthand": "-V",
"flag": "--verbose",
"description": "Makes output more verbose"
},
{
"flag": "--allow-root",
"description": "Allows running commands as root"
},
{
"shorthand": "-v",
"flag": "--version",
"description": "Output Bower version"
},
{
"flag": "--no-color",
"description": "Disable colors"
}
]
}
,或javascript中的print_r(an_object)
(在浏览器中),但是对于Android。
我试过这个
console.log(an_object)
这会生成错误消息:
错误:(23,10)错误:没有为d找到合适的方法(String,View) 方法Log.d(String,String,Throwable)不适用 (实际和正式的参数列表长度不同) 方法Log.d(String,String)不适用 (实际参数View不能通过方法调用转换转换为String)
答案 0 :(得分:14)
您无法像在javascript中那样在Java中将对象打印到控制台。
你有三个解决方案。
1)使用调试器。在android studio中放置断点并调试。然后,您可以检查范围内的完整对象。
2)序列化您的对象(例如,JSON)并将结果打印到控制台。
3)覆盖对象的toString
方法,为您提供所需的所有信息并致电Log.d("myTag", yourObj.toString())
我强烈推荐第一种方法。我曾经避免调试器,但学习如何使用调试器是我做的最好的事情。它可以提高您的效率并使调试非常简单
答案 1 :(得分:6)
第二个参数必须是String。
Log.d("an_id", String.valueOf(the_arg));
您的错误表明您无法记录View
课程
没有为d(String,View)找到合适的方法
当您使用View
String.valueOf
对象时,在控制台中看到一些废话时不要感到惊讶
答案 2 :(得分:1)
将对象转换为JSON。您可以使用Gson。
val gson = Gson()
val json = gson.toJson(yourObject)
Log.e(TAG, json)
或
Log.e(TAG, Gson().toJson(yourObject))
答案 3 :(得分:1)
在logcat中输出数据对象有点容易。
正确的方法是在对象内override
toString()
。
它可以由Android Studio本身按照以下简单步骤生成:
1-打开DataClass
2-按Alt + Insert或右键单击并单击Generate...
3-在“生成”窗口中,选择toString()
4-在下一个窗口中选择所有变量,然后单击OK
5- toString()
方法将在您的数据类中override
返回数据模型的String
模板。
干杯!
答案 4 :(得分:0)
只写了一种通用方法,这使得通过槽反射成为可能:
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (Field field : this.getClass().getDeclaredFields()) {
String item;
if(! field.getType().getSimpleName().equals("ArrayList")) {
try {
Object value = field.get(this);
item = String.format("%s %s %s: %s%n", Modifier.toString(field.getModifiers()), field.getType().getSimpleName(), field.getName(), String.valueOf(value));
sb.append(item);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else {
item = String.format("%s %s %s: ArrayList<>%n", Modifier.toString(field.getModifiers()), field.getType().getSimpleName(), field.getName());
sb.append(item);
}
}
return sb.toString();
}