我有一个 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);
}
我创建 JSON 对象profileData
使用 HashMap 来自 GSON:
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"}`
这正是我想要的配置文件数据对象内部,而不嵌套map
目的。
我该如何解决这个问题?
“我已经知道我可以通过将 D 类中的 profileData 类型从 JSONObject 转换为 String 来实现此目的,这将引发转义字符 - 但是我正在寻找通用的解决方案”
EDIT:
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));
}
And:
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();
让我困惑的是,当我尝试遍历配置文件数据并尝试按名称“map”获取 json 对象时,我得到一个 nullPointerException