我需要将包含string
,integer
和double
数据混合的json对象发送到MongoDB。
问题是我无法将对象从我的Activity发送到我用来连接并将数据发布到MongoDB服务器的服务。
mJsonObject = new JSONObject();
intentService = new Intent();
intentService.setClass(this, MyService.class);
intentService.putExtra("Json Object", mJsonObject);
编译器不允许我使用意图mJsonObject
中的putExtra
。
答案 0 :(得分:0)
您不能使用intent发送普通对象。要使用intent将对象从一个活动发送到另一个活动,Object必须是可序列化的。
So you can put data of Json Object into your custom pojo class which should implements serializable.then this pojo class object you can pass with intent
答案 1 :(得分:0)
JSONObject
类未实现Serializable
,因此您无法在putExtra()
意图方法中添加它。
但是您可以使用以下两种解决方法:
使用toString()
的{{1}}方法,并将此字符串添加到意图中。
只需扩展JSONObject
和JSONObject
并实现JSONArray
,但请确保您已在子类中定义了所有构造函数并实现了返回父类型的特定方法作为Serializable
和getJSONObject()
。
答案 2 :(得分:0)
Intent不接受JSONObjects,所以你必须将它转换为另一种数据类型,而不是通过intent extras发送,比如String:
intentService.putExtra("Json Object", mJsonObject.toString());
然后在从String
收到JSONObject
时将其转换回来:
Intent intent = getIntent();
try {
JSONObject mJsonObject = new JSONObject(intent.getStringExtra("Json Object"));
} catch (JSONException e) {
e.printStackTrace();
}