从Android Studio调试器中导出对象

11

有没有一种方法可以从Android Studio(IntelliJ IDEA)调试器中导出对象。例如,Visual Studio有Object Exporter

最终我需要创建/生成包含基于服务器响应值初始化的对象。因此,任何其他实现此目的的解决方案也是欢迎的。

2个回答

11

以下是如何将名为output的变量导出到剪贴板的步骤:

  • 添加断点并以调试模式运行代码
  • 当您达到断点时,在上下文菜单中选择对象,然后单击“评估表达式”
  • 在表达式字段中编写将对象转换为String的表达式,例如如果您的项目可以访问Gson

    new GsonBuilder().create().toJson(output)
    
  • 在结果的上下文菜单中,选择“复制值”


2
这可能比您想要的更繁琐,但以下方法是有效的:
创建一个自定义数据类型渲染器,如@Donn_Felker所提到的。假设您在类路径上有一个可以将对象序列化为JSON(或其他您感兴趣的格式)的类,请在数据类型渲染器中使用该对象来生成包含序列化数据的字符串。
在我的情况下,我在项目中有一个名为GsonProvider的类,它实际上是Google's GSON的工厂类。我在数据类型渲染器中使用的表达式是:com.example.GsonProvider.getGson().toJson(this)。类名需要完全合格。
如果您只能在“渲染”检查节点时使用它,那将会很好,但不幸的是,虽然您可以看到序列化值,但似乎没有任何方法可以将其复制到剪贴板或以任何方式导出。
因此,在“展开节点”部分添加该表达式。我能够通过选择“使用表达式列表”,然后添加一个名称为“json”的表达式,值为com.example.GsonProvider.getGson().toJson(this)来使其正常工作。
我将我的自定义渲染器保存为“json”。
有了这个,您可以右键单击“变量”或“监视”窗口中的变量,然后选择“查看为”--> json,您将看到它作为一个JSON字符串。右键单击它,然后选择“复制数据”。这将把JSON字符串复制到您的剪贴板中。

谢谢。这提供了一种实现类似于我想要的东西的方法,但在我的情况下,我基本上最终不得不从头开始构建所有内容。我不使用JSON... - Leo K
好的,重点是它不一定要是JSON,您可以使用任何编码方式,只要您有一个能够进行序列化的类即可。 - GreyBeardedGeek
我只是使用标准的Java序列化,所以不会像JSON一样给我一个漂亮易读的对象。 - Leo K
还是有些繁琐,但如果您将对象转换为可序列化对象,然后进行序列化并对结果进行Base-64编码,会怎么样呢? - GreyBeardedGeek
哈哈,很有趣的想法。虽然对我个人来说不适用,但通常而言是这样的。我会让问题保持一段时间,如果没有人提出比Object Explorer更接近的工具/方法,那么我将接受您的方案作为目前在InteliJ IDEA(Android Studio)中最好的解决方案。 - Leo K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接