android bundle json,将Bundle转换为JSON

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

JSONObject json = new JSONObject(); Setkeys = 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将要求您捕获JSONException 。

编辑:

有人指出,前面的代码没有很好地处理Collection和Maptypes。 如果你使用的是API 19或更高版本,那么有一个JSONObject#wrap方法,如果这对你很重要的话会有所帮助。 来自文档 :

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

private String getJson(final Bundle bundle) { if (bundle == null) return null; JSONObject jsonObject = new JSONObject(); for (String key : bundle.keySet()) { Object obj = bundle.get(key); try { jsonObject.put(key, wrap(bundle.get(key))); } catch (JSONException e) { e.printStackTrace(); } } return jsonObject.toString(); } public static Object wrap(Object o) { if (o == null) { return JSONObject.NULL; } if (o instanceof JSONArray || o instanceof JSONObject) { return o; } if (o.equals(JSONObject.NULL)) { return o; } try { if (o instanceof Collection) { return new JSONArray((Collection) o); } else if (o.getClass().isArray()) { return toJSONArray(o); } if (o instanceof Map) { return new JSONObject((Map) o); } if (o instanceof Boolean || o instanceof Byte || o instanceof Character || o instanceof Double || o instanceof Float || o instanceof Integer || o instanceof Long || o instanceof Short || o instanceof String) { return o; } if (o.getClass().getPackage().getName().startsWith("java.")) { return o.toString(); } } catch (Exception ignored) { } return null; } public static JSONArray toJSONArray(Object array) throws JSONException { JSONArray result = new JSONArray(); if (!array.getClass().isArray()) { throw new JSONException("Not a primitive array: " + array.getClass()); } final int length = Array.getLength(array); for (int i = 0; i < length; ++i) { result.put(wrap(Array.get(array, i))); } return result; }

Object myJsonObj = bundleObject.get("yourKey"); JsonParser parser = new JsonParser(); JsonObject json = parser.parse(myJsonObj.toString()).getAsJsonObject(); json.get("memberInJson").getAsString();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值