【问题标题】:How to send and receive the json object from one activity to another?如何将 json 对象从一个活动发送和接收到另一个活动?
【发布时间】:2017-05-09 04:13:11
【问题描述】:

我在将 google 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 对象从一个活动发送和接收到另一个活动。

【问题讨论】:

  • 将您的Json 解析为一个自定义对象,然后将您的类设为ParcelableSerializable 在活动之间传递
  • 我不知道如何解析...请您发布您的代码
  • 我们无法帮助您生成/编写一段代码。我们可以帮助您制定一个好的逻辑。您的问题表明没有进行适当的研究!
  • @Zain 如何接收并将接收到的数据传递给 json 对象,在上面的链接中我在接收方有点困惑

标签: android json android-intent


【解决方案1】:

你做对了。要在另一个活动中获取它,您可以继续

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();
                }
            }

【讨论】:

  • 当将scamDatas应用于jsonObjectScamData时,发生错误
  • 好的,可能是强制转换。你使用的是 JsonObject,我使用的是 JSONObject。
  • JsonParser 解析器 = 新的 JsonParser(); JsonObject o = parser.parse(scamDatas).getAsJsonObject();
  • 请编辑你的答案我会接受你的答案..在你​​的代码中添加 JsonParser
【解决方案2】:

试试

1. 通过 Intent 发送字符串

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

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

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

3.使用JsonParser解析json

new JsonParser().parse(scamDataStr);

【讨论】:

    【解决方案3】:

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

    i.putString("scamData", jsonObj.toString);
    

    然后你可以在 MovieProductActivity 中

    JSONObject jsonObj = new JSONObject(getIntent().getStringExtra("scamData"));
    

    【讨论】:

      【解决方案4】:
      • 通过 Intent 发送字符串

      intent.put("scamData",scamData.getAsString();

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

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

      • 使用 JsonParser 解析 json

      new JsonParser().parse(scamDataStr);

      【讨论】:

        【解决方案5】:

        对于 kotlin 爱好者,

        使用数据类,使用@Parcelize注解,扩展Parcelable接口。

        可以在活动的情况下使用意图,在片段之间移动的一种方式 - 使用捆绑。

        Bundle().apply{
         putParcelable("some_unique_key",data)
        }
        
        val data = arguments.getParcelable<DataType>("some_unique_key")
        

        【讨论】:

          猜你喜欢
          • 2012-08-04
          • 1970-01-01
          • 2014-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-24
          • 2014-09-06
          相关资源
          最近更新 更多