我一直在玩org.json库。我试图将一个Enum类型列表附加到json对象,但生成的json数组为空。这就是我的意思:
attribEffects应分别持有“HEALTH”和“AMMO”。
{"attr": [
{
"amount": [1000],
"mult": [0],
"attribId": [0],
"time": [-1],
"attribDesc": [null],
"attribName": ["Health Buff (1000)(Debug)"],
"attribEffects": [{}]
},
{
"amount": [5],
"mult": [0],
"attribId": [1],
"time": [5],
"attribDesc": [null],
"attribName": ["devgun_ammo"],
"attribEffects": [{}]
}
]}
这是我写信的地方:
for(Attribute a : (List<Attribute>) l) {
JSONObject j = new JSONObject();
j.append("attribName", a.getAttribName());
j.append("attribId", a.getAttribId());
j.append("attribDesc", a.getAttribDesc());
j.put("attribEffects", a.getEffects());
for(Object o : a.getEffects())
System.out.println(o.toString());
// j.append("attribEffects", a.getAffects()); //TODO: Debug me
j.append("amount", a.getAmount());
j.append("mult", a.getMult());
j.append("time", a.getTime());
root.append("attr", j);
}
用于验证的System.out.println的输出:
HEALTH
AMMO
有什么想法吗?
编辑: 我意识到有一个单值的数组是没有意义的,但我希望这可以扩展,以便有一个具有多个效果的单一事物
答案 0 :(得分:0)
由于json.org库已经过时且不受支持,因此切换它可能是明智之举。但是,作为一个快速的解决方法,因为这不是一个严肃的项目, 这就是现在的诀窍:
for(Attribute a : (List<Attribute>) l) {
JSONObject j = new JSONObject();
j.append("attribName", a.getAttribName());
j.append("attribId", a.getAttribId());
j.append("attribDesc", a.getAttribDesc());
JSONArray jar = new JSONArray();
for(Object o : a.getAffects())
jar.put(o.toString()); //TODO Optimize and Time me
j.put("attribEffects", jar);
j.append("amount", a.getAmount());
j.append("mult", a.getMult());
j.append("time", a.getTime());
root.append("attr", j);
}
(注意:组装一个JSONArray,填充它并附加它而不是使用JSONObject的集合内置函数)