如何从一个活动发送和接收json对象?

时间:2017-05-09 04:13:12

标签: android json android-intent

我正面临着从活动向另一项活动发送和接收谷歌json对象的问题。

 List<Integer> selectedScamMediumIds = scamMediumHorizontalAdapter.getSelectedScamMediumIds();
 JsonObject scamData = new JsonObject();
 JsonArray scamMediumJsonArray = new JsonArray();

 for (Integer scamMediumId:selectedScamMediumIds) {
     JsonPrimitive jsonPrimitive = new JsonPrimitive(scamMediumId);
     scamMediumJsonArray.add(jsonPrimitive);
 }
 scamData.add("scam_medium_id",scamMediumJsonArray);
 scamData.addProperty("scam_category_id", scamCategoryId);
 scamData.addProperty("scam_sub_category_id", scamSubCategoryId + "");
 scamData.addProperty("scammer_phone", phoneNumber.getText().toString());
 scamData.addProperty("scammer_location", scammerLocation.getText().toString());
 scamData.addProperty("lat", lattitude);
 scamData.addProperty("lng", longitude);

 Intent intent = new Intent(ScamLookUpActivity.this, ScamSearchActivity.class);
 intent.putExtra("scamDatas", scamData.toString());
 intent.putExtra("scamSubCategoryText", subCategoryTitle);
 startActivity(intent);

我已经尝试过上面的方法,我不知道它是否正确。请帮助我如何从一个活动发送和接收json对象到另一个活动。

5 个答案:

答案 0 :(得分:3)

你正在做正确的方法。要在其他活动中获取它,您可以继续

if (getIntent().getExtras() != null) {
                String scamDatas = getIntent().getStringExtra("scamDatas");
                String scamSubCategoryText  = getIntent().getStringExtra("scamSubCategoryText");
                try {
                  JsonParser parser = new JsonParser(); 
                  JsonObject scamDataJsonObject = parser.parse(scamDatas).getAsJsonObject(); 
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

答案 1 :(得分:2)

尝试

1。通过Intent发送字符串

intent.put("scamData", scamData.getAsString(); //or scamData.toString();

2. 从其他活动中的意图接收字符串

String scamDataStr = getIntent().getStringExtra("scamData");

3. 使用JsonParser

解析json
new JsonParser().parse(scamDataStr);

答案 2 :(得分:0)

您可以简单地将整个JSONObject作为字符串。像这样:

origin

然后在MovieProductActivity中你可以

free()

答案 3 :(得分:0)

  • 通过Intent发送字符串

intent.put(“ scamData”,scamData.getAsString();

  • 从其他活动意图中接收字符串

字符串scamDataStr = getIntent()。getStringExtra(“ scamData”);

  • 使用JsonParser解析json

新的JsonParser()。parse(scamDataStr);

答案 4 :(得分:0)

对于Kotlin爱好者,

使用数据类并使用@Parcelize批注,并使用Parcelable接口进行扩展。

可以在活动时使用意图,这是在片段之间移动的一种方法-使用捆绑软件。

Bundle().apply{
 putParcelable("some_unique_key",data)
}

val data = arguments.getParcelable<DataType>("some_unique_key")
相关问题