Java 使用GSON将条目映射到JSON转换并没有传递请求中的所有条目

Java 使用GSON将条目映射到JSON转换并没有传递请求中的所有条目,java,android,json,gson,Java,Android,Json,Gson,我正在尝试使用GSON将JSON请求数据转换为JSON字符串。为此,我使用地图。但是我可以看到,一些地图条目在请求中被忽略了 String jsonStrReq = null; Map<String, String> patient1 = new HashMap<String, String>(); patient1.put("diagnosis", diagnosis); patient1.put("doct

我正在尝试使用GSON将JSON请求数据转换为JSON字符串。为此,我使用地图。但是我可以看到,一些地图条目在请求中被忽略了

String jsonStrReq = null;
Map<String, String> patient1 = new HashMap<String, String>();
        patient1.put("diagnosis", diagnosis);
        patient1.put("doctorId", Prefs.getString("docid", ""));
        patient1.put("patientId", null);
        patient1.put("patientName", name);
        patient1.put("patientUhid", uhid);
        patient1.put("mobileNumber", phone);
        patient1.put("age", age);
        patient1.put("gender", gender);
        patient1.put("area", area);
        patient1.put("city", city);
        patient1.put("tagColor", tagColor);
        patient1.put("treatments", treatment);
        patient1.put("profilePic", null);
        Gson gsonReq = new GsonBuilder().serializeNulls().create();
        jsonStrReq = gsonReq.toJson(patient1);
        Log.d("Testing", "Add Patient passed json  "+jsonStrReq);
如果您看到几乎没有条目完全丢失。我只是想知道我在这里做错了什么。
请帮助

我尝试了一下您的代码(只是将变量替换为字符串值作为映射)

我拿到了所有的钥匙。所以我不知道你怎么了

{"area":"area","patientName":"name","gender":"gender","patientId":null,"city":"city","tagColor":"tagColor","patientUhid":"uhid","mobileNumber":"phone","profilePic":null,"diagnosis":"diagnosis","treatments":"treatment","doctorId":"Prefs.getString","age":"age"}


String jsonStrReq = null;
        Map<String, String> patient1 = new HashMap<String, String>();
        patient1.put("diagnosis", "diagnosis");
        patient1.put("doctorId", "Prefs.getString");
        patient1.put("patientId", null);
        patient1.put("patientName", "name");
        patient1.put("patientUhid", "uhid");
        patient1.put("mobileNumber", "phone");
        patient1.put("age", "age");
        patient1.put("gender", "gender");
        patient1.put("area", "area");
        patient1.put("city", "city");
        patient1.put("tagColor", "tagColor");
        patient1.put("treatments", "treatment");
        patient1.put("profilePic", null);
        Gson gsonReq = new GsonBuilder().serializeNulls().create();
        jsonStrReq = gsonReq.toJson(patient1);
        DebugLog.send(jsonStrReq);
{“地区”:“地区”、“患者姓名”:“姓名”、“性别”:“性别”、“患者姓名”:“空”、“城市”:“城市”、“tagColor”:“tagColor”、“patientUhid”:“uhid”、“mobileNumber”:“电话”、“profilePic”:“空”、“诊断”:“诊断”、“治疗”:“治疗”、“医生ID”:“Prefs.getString”、“年龄”:“年龄”}
字符串jsonStrReq=null;
Map patient1=新的HashMap();
病人1.put(“诊断”、“诊断”);
patient1.put(“doctorId”、“Prefs.getString”);
patient1.put(“patientId”,null);
病人1.输入(“病人姓名”、“姓名”);
patient1.put(“patientUhid”、“uhid”);
病人1.放置(“手机”、“电话”);
患者1.放置(“年龄”、“年龄”);
病人1.put(“性别”、“性别”);
病人1.放置(“区域”、“区域”);
病人1.放置(“城市”、“城市”);
患者1.放置(“tagColor”、“tagColor”);
患者1.放置(“治疗”、“治疗”);
patient1.put(“profilePic”,null);
Gson gsonReq=new GsonBuilder().serializeNulls().create();
jsonStrReq=gsonReq.toJson(patient1);
send(jsonStrReq);

因为您的值为空。如果您想在json中也包含null值。您必须告诉您的gson实例以导出空值。我不记得méthode的名字了,但我肯定有一个。我已经使用了serializeNulls()还有那些不为null的值,它们不会出现很好的问题!,您还可以提供HashMap内容的调试日志吗?虽然HashMap没有关于空值的特殊规则,但我很好奇它是否被正确添加。请同时提供所使用的gson版本。implementation'com.google.code.gson:gson:2.8.6'我尝试了androidx collection中的new ArrayMap()(这对您更合适)。同样,我得到了一切,{“治疗”:“治疗”,“性别”:“性别”,“profilePic”:null,“tagColor”:“tagColor”,“patientId”:null,“年龄”:“年龄”,“地区”:“地区”,“城市”:“城市”,“患者姓名”:“姓名”,“患者姓名”:“姓名”,“患者姓名”:“uhid”,“医生ID”:“Prefs.getString”,“诊断”:“诊断”,“手机号码”:“电话”}我使用了你添加的相同代码。我没有把它们都修好,我修好了。它在内部调用另一个导致问题的方法。我真的忽略了这一点。我的错@泰迪·史密斯谢谢你的帮助。
{"area":"area","patientName":"name","gender":"gender","patientId":null,"city":"city","tagColor":"tagColor","patientUhid":"uhid","mobileNumber":"phone","profilePic":null,"diagnosis":"diagnosis","treatments":"treatment","doctorId":"Prefs.getString","age":"age"}


String jsonStrReq = null;
        Map<String, String> patient1 = new HashMap<String, String>();
        patient1.put("diagnosis", "diagnosis");
        patient1.put("doctorId", "Prefs.getString");
        patient1.put("patientId", null);
        patient1.put("patientName", "name");
        patient1.put("patientUhid", "uhid");
        patient1.put("mobileNumber", "phone");
        patient1.put("age", "age");
        patient1.put("gender", "gender");
        patient1.put("area", "area");
        patient1.put("city", "city");
        patient1.put("tagColor", "tagColor");
        patient1.put("treatments", "treatment");
        patient1.put("profilePic", null);
        Gson gsonReq = new GsonBuilder().serializeNulls().create();
        jsonStrReq = gsonReq.toJson(patient1);
        DebugLog.send(jsonStrReq);