2017-07-28 10 views
0

私はorg.jsonライブラリで遊んでいます。私はjsonオブジェクトにList of Enum型を追加しようとしていましたが、結果として生じるjson配列は空です。私が意味するものは次のとおりです。リストを追加すると空のJSON配列になりますか?

attribEffectsはそれぞれ "HEALTH"と "AMMO"を保持すると想定されています。

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 

任意のアイデアを、私はそれに書き込むのはここ

{"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": [{}] 
    } 
]} 

はありますか?

編集:私は、単一の値のアレイを有する実現 は一種の無意味ですが、json.orgライブラリは古いものですので、私は、これは複数のエフェクト

+0

[Java:Jsonオブジェクトへのenumからなるオブジェクトの変換]の可能な複製(https://stackoverflow.com/questions/30871013/java-convert-object-consisting-enum-to-json-object) – Berger

+1

それはかなり重複していませんが、同じ問題です、ありがとう、実際に私を助けました。 – Wep0n

+0

JSONObjectは列挙型をサポートしていないようです –

答えて

0

を持つ単一のものを有する場合には拡張可能なようにしたいですサポートされていない場合は、おそらくそれを離れて切り替えるのが賢明でしょう。

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のビルトインを使用することを追加し、これは深刻なプロジェクトではありませんので、迅速な回避策として、 これは今のトリックをしました

関連する問題