当前位置: 首页 > 面试题库 >

将Bundle转换为JSON

东方涛
2023-03-14
问题内容

我想将Intent的Extras Bundle转换为JSONObject,以便可以将其传递给JavaScript。

有没有快速或最佳的方法来进行此转换?如果不是所有可能的捆绑包都能正常工作,那就没关系了。


问题答案:

您可以Bundle#keySet()用来获取捆绑软件包含的密钥列表。然后,您可以遍历这些键,并将每个键值对添加到中JSONObject

JSONObject json = new JSONObject();
Set<String> keys = bundle.keySet();
for (String key : keys) {
    try {
        // json.put(key, bundle.get(key)); see edit below
        json.put(key, JSONObject.wrap(bundle.get(key)));
    } catch(JSONException e) {
        //Handle exception here
    }
}

请注意,这JSONObject#put将需要您抓住一个JSONException

编辑:

有人指出,以前的代码不能很好地处理CollectionMap键入。如果您使用的是API
19或更高版本,那么有一种JSONObject#wrap对您很重要的方法将有所帮助。从文档:

如有必要,包装一个物体。如果对象为null,则返回NULL对象。如果它是数组或集合,则将其包装在JSONArray中。如果是地图,则将其包装在JSONObject中。如果它是标准属性(Double,String等),则它已经被包装。否则,如果它来自java软件包之一,则将其转换为字符串。如果没有,请尝试将其包装在JSONObject中。如果包装失败,则返回null。



 类似资料:
  • 问题内容: 我有一个JAR文件,我需要将其转换为OSGi捆绑软件。我没有JAR文件的原始源代码。 编辑: 我需要转换几个,但固定数量的jar。 问题答案: 选项1- 当期望频繁添加/更新Jars或可以从Maven存储库检索依赖项时,请使用 bnd-platform 构建OSGi捆绑包 我们使用bnd-platform(我也是作者)来管理第三方依赖项并从中创建OSGi捆绑包。您可以将其与从Maven

  • 我正在尝试转换org.pbjar。jxlayer库到OSGi捆绑包,我已经成功了,但当我尝试将其安装到Karaf容器中时,该容器声称该捆绑包缺少一个需求: 无法解析312.0:缺少要求[312.1]osgi.wiring。包裹(osgi.wiring.package=com.sun.java.swing) 我也把javax.swing捆绑导入指令,但问题仍然存在我改变了JDK的版本(1.5,1.6

  • 在研究了OSGi框架之后,我开发了一个示例web应用程序,web应用程序包(.war或.jar)打包在EBA中。war文件在其目录中包含一组嵌入式jar文件,这些jar已转换为OSGi bundle),并根据jar之间的关系提供了所需的导出和导入包。现在我甚至不得不提到bundle-classpath中的所有这些jar。上面的工作是因为一个bundle(wab也是一个bundle)可以在其中包含一

  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转

  • 问题内容: 我有一个对象。用它创建对象的最简单方法是什么? 问题答案: 再次从中获取JSON字符串并进行解析

  • 问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。