我有一个POJO类:

public class D{

    private JSONObject profileData;


    public JSONObject getProfileData ()
    {
        return profileData;
    }

    public void setProfileData (JSONObject profileData)
    {
        this.profileData = profileData;
    }

}


现在,我将此类填充为:

for (int i =0; i<identities.size();i++){
            D d = new D();

            d.setProfileData(profileData);

            dList.add(d);
        }


我使用HashMap从GSON为profileData创建JSON对象:

profileDataInJson = new JSONObject(gson.toJson(map1));


profileDataInJson的签名为:JSONObject profileDataInJson = null;

现在生成的JSON类似于:

"profileData":{"map":{"ioCinema":"firstValue","ioSIMAvailable":"firstKey","Name":"onePair"}}


我在主profileData对象中插入了一个不需要的对象,称为map。

但是当我在循环中打印时

{`"ioCinema":"firstValue","ioSIMAvailable":"firstKey","Name":"onePair"}`


完全是我想要的profileData对象内部的东西,而没有嵌套map对象。

我该如何解决?

“我已经知道,可以通过将D类中的profileData的类型从JSONObject转换为String来实现,这将引起转义字符-但是我正在寻找一种通用解决方案”

编辑:

map1的构建方式有两种,具体取决于用户输入,并且两种方式均如下所示:

if (args.length >= 4 && args[1].equalsIgnoreCase("onePair")) {

                    map1 = new HashMap<>();
                    String key1 = args[2];
                    String value1 = args[3];


                    map1.put(key1, value1);


                    profileDataInJson = new JSONObject(gson.toJson(map1));

                }


和:

if (args.length >= 1 && args[0].equalsIgnoreCase("update")) {

                if (args.length >= 2)
                    profileData.setName(args[1] != null ? args[1] : "");

                if (args.length >= 3)
                    profileData.setSIMAvailable(args[2] != null ? args[2] : "");
                  profileDataInJson = new JSONObject(profileData);
}


签名:ProfileData profileData = new ProfileData();

让我感到困惑的是,当我尝试遍历profileData并尝试通过名称“ map”获取json对象时,我得到了nullPointer异常

最佳答案

您无需使用Gson将哈希图转换为json对象。
只需使用:

profileDataInJson = new JSONObject(map);

关于java - JSON嵌套在POJO中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42786013/

10-11 12:17