【问题标题】:Android: JSON not converting object properlyAndroid:JSON 没有正确转换对象
【发布时间】:2013-09-10 14:25:46
【问题描述】:

所以我正在尝试将字典转换为 JSON 对象,问题是生成的 JSON 无效,当它尝试将地图列表转换为 JSON 时会出现问题

        final List<Map<String,Object>> sessions = new ArrayList<Map<String,Object>>();

        Map<String,Object> sessionDict = null;
        for (String session : SessionsList) {
            sessionDict = new HashMap<String,Object>();
            sessionDict.put("SessionCode", session);
            sessions.add(sessionDict);
        }


        Map<String,Object> map = new HashMap<String,Object>(){
            private static final long serialVersionUID = 1L;
        {
            put("EmailAnswer", "Y");
            put("IsSendSupervisor", isSendSup);
            put("IsSendTC", isSendTC);
            put("ContentType", "MS");
            put("ApprovalResponse", "");
            put("EmpId", empId);
            put("IsSendEmployee", isSendEmp);
            put("MyScheduleRecords", sessions);
        }};

        JSONObject json = new JSONObject(map);

生成的内容如下:

    {
        "EmpId":"100-02",
        "IsSendEmployee":"Y",
        "ApprovalResponse":"",
        "EmailAnswer":"Y",
        "IsSendTC":"Y",
        "MyScheduleRecords":"[
            {
                SessionCode=371
            }, 
            {
                SessionCode=372
            }
        ]",
        "ContentType":"MS",
        "IsSendSupervisor":"N"
    }

但我希望它是这样转换的:

    [
        {
            "EmailAnswer": "Y",
            "IsSendSupervisor": "N",
            "IsSendTC": "N",
            "ContentType": "MS",
            "ApprovalResponse": "",
            "EmpId": "100-01",
            "IsSendEmployee": "Y",
            "MyScheduleRecords": [
                {
                    "SessionCode": "152"
                },
                {
                    "SessionCode": "500"
                }
            ]
        }
    ]

有谁知道为什么它没有被正确转换?

【问题讨论】:

    标签: android json map


    【解决方案1】:

    试试这个代码 -

    Map<String,Object> map = new HashMap<String,Object>(){
                private static final long serialVersionUID = 1L;
            {
                put("EmailAnswer", "Y");
                put("IsSendSupervisor", isSendSup);
                put("IsSendTC", isSendTC);
                put("ContentType", "MS");
                put("ApprovalResponse", "");
                put("EmpId", empId);
                put("IsSendEmployee", isSendEmp);
            }};
    

    编辑 -

        JSONArray jsonArray = new JsonArray();
        for (String session : SessionsList) {
                JsonObject jsonObject2 = new JSONObject();
                jsonObject2.put("SessionCode", session);
                jsonArray.add(jsonObject2)
            }
        JSONObject json = new JSONObject(map);
        json.put("MyScheduleRecords", jsonArray);
    

    【讨论】:

    • 解决问题了吗?
    • 感谢您的建议,但它不起作用,这是生成的 JSON:{ "EmpId":"100-R", "IsSendEmployee":"Y", "EmailAnswer":"Y" , "ApprovalResponse":"", "IsSendTC":"Y", "MyScheduleRecords":["{SessionCode=335}","{SessionCode=336}"], "IsSendSupervisor":"N", "ContentType": “女士”}
    • 我希望 MyScheduleRecords 部分以这种格式生成: "MyScheduleRecords": [ { "SessionCode": "152" }, { "SessionCode": "500" } ]
    • 您的代码运行良好,在我查看它之后,我可以看到我失败的地方,现在它非常有意义。谢谢。
    猜你喜欢
    • 2021-09-27
    • 2022-01-06
    • 2012-05-06
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    相关资源
    最近更新 更多