Map本身只是一个接口,它的子类Hashtable,HashMap,LinkedHashMap,TreeMap都已经实现了Serializable接口(ArrayMap没有实现Serializable接口),但是在一些特殊的地方Map的value是object,却需要执行Serializable操作,此时就需要做一些特殊的处理。如果全部使用字符串会导致一些JSONObject数据最外层多两个引号
下面是发送数据的页面
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.mouse.temporarydemo.bean.PersonBean;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
private Button btnMain;
private HashMap<String, Object> stringArrayMap;
private Context context;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = MainActivity.this;
initView();
initData();
initListener();
}
private void initView() {
btnMain = this.findViewById(R.id.btnMain);
}
private void initData() {
stringArrayMap = new HashMap<>();
stringArrayMap.put("1_3_8", "");
stringArrayMap.put("1_4_4", "A");
stringArrayMap.put("1_3_3", "B");
stringArrayMap.put("1_1_1", "C,D");
PersonBean personBean = new PersonBean("1111111111111", "");
stringArrayMap.put("1_3_8", personBean);
PersonBean personBean1 = new PersonBean();
personBean1.setContent("22222222222");
String OSSFileName = "__vipserver/img/"
+ new SimpleDateFormat("yyyyMM").format(new Date()) + "/"
+ "18811242229_" //学员登录手机号, 嵌入项目的时候需要改成系统存的值;
+ String.valueOf(System.currentTimeMillis()) + "_"
+ String.valueOf((int) ((Math.random() * 9 + 1) * 100000))
+ ".jpg"; // 格式化文件名称.
personBean1.setPic(OSSFileName);
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("content", "222222222");
jsonObject.put("pic", OSSFileName);
} catch (JSONException e) {
e.printStackTrace();
}
stringArrayMap.put("1_3_9", jsonObject);
Log.e("stringArrayMap", stringArrayMap.toString());
}
private void initListener() {
btnMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, SecondActivity.class);
// 先转化为JSONObject,然后转化为String
JSONObject jsonObject1 = new JSONObject(stringArrayMap);
intent.putExtra("json", jsonObject1.toString());
startActivity(intent);
}
});
}
}
下面是接收数据的页面
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class SecondActivity extends AppCompatActivity {
private ArrayMap<String, Object> stringArrayMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
initData();
}
private void initData() {
Intent intent = getIntent();
String json = intent.getStringExtra("json");
Log.e("json", json);
if (!TextUtils.isEmpty(json)) {
Gson gson = new Gson();
stringArrayMap = gson.fromJson(json, new TypeToken<ArrayMap<String, Object>>() {}.getType());
}
}
}
网友评论