我有一个捆绑包,我想将其转换为一个大的JSONObject,以便稍后我可以通过Web服务发送它。这个主包主要包含字符串和整数,但它还包含另一个包,其中包含具有4个键值对的包。
代码:
private JSONObject convertBundleToJSON(Bundle b)
{
//the main json object to be returned
JSONObject json = new JSONObject();
Set<String> keys = b.keySet();
for (String key : keys) {
try {
// json.put(key, bundle.get(key)); see edit below
json.put(key, JSONObject.wrap(b.get(key)));
} catch(JSONException e) {
//Handle exception here
Log.d("Convert Bund", e.toString());
}
}
JSONObject fvl = new JSONObject();
int i = 0;
//error right here - b is a bundle of bundles; trying to iterate through
Set<Bundle> bundles = (Set<Bundle>) b.get("field_value_list");
for (Bundle bun : bundles)
{
JSONObject f = new JSONObject();
try {
f.put("fld_value_decode", bun.get("fld_value_decode"));
f.put("fld_id", bun.get("fld_id"));
f.put("fld_value", bun.get("fld_value"));
f.put("fld_name", bun.get("fld_name"));
fvl.put(i+"",f);
i++;
} catch(JSONException e) {
//Handle exception here
Log.d("FVL Convert Bund", e.toString());
}
}
try {
json.put("field_value_list", fvl);
} catch (JSONException e) {
e.printStackTrace();
}
return json;
}
但是我在错误行得到了一个转换异常。它不喜欢bundle和set之间的强制转换。任何想法或替代方法来解决这个问题?
答案 0 :(得分:0)
您可以通过创建可分割的模型类来实现此目的,而不是采用这种复杂的方式。
只需将那些json添加到该模型并进一步传递它,使用它会更简单。