2016-04-03 6 views
1

私はHashMapを解析しようとしているJSON文字列を持っています。JSONからHashMapまでのGson <Integer、MyObject> IntegerはJSONオブジェクトの内部にあります

私のオブジェクトは次のようになります。

public class MyObject { 

private int id; 
private String text; 
} 

とJSON文字列は次のようになります。

objects:[ 
{"id":1, "text":"firsttext"}, 
{"id":2, "text":"secondtext"}, 
{"id":3, "text":"thirdtext"} 
] 

にはどうすればいいのHashMap <整数、MyObjectににこれを解析する程度きれいに行くだろう>となるようHashMap.get(2)を呼び出すと、「secondtext」を含む配列の2番目のオブジェクトが返されます。今私がやっている

Type integerStringMap = new TypeToken<Map<Integer, MyObject>>(){}.getType(); 
HashMap<Integer, MyObject> objects = new Gson().fromJson(content, integerStringMap); 

あるしかし、私はjava.lang.NumberFormatExceptionを取得しています: "ID":入力文字列の場合。

私はループなしでこれを解決する方法として非常に無知だと私は本当にこれを行うためにもっと巧妙な方法が望んでいる。助けていただければ幸いです!

編集:ここでは、私が欲しいものを行うコードの抜粋です:

Type integerObjectList = new TypeToken<List<MyObject>>(){}.getType(); 

List<MyObject> cardList = new Gson().fromJson(jsonString, integerObjectList); 

HashMap<Integer, MyObject> cardMap = new HashMap<Integer, MyObject>(); 
for (MyObject o : objectList) { 
    objectMap.put(o.getId(), o); 
} 

私は考えのためのループせずにそれを行うことが可能たい場合。

+0

は、[この](http://www.leveluplunch.com/java/examples/convert-json-to-from-map-jackson/)を見てください。 –

答えて

0

次のコードは私のために働いた。おそらく、あなたはどのように 'コンテンツ'を作成するには問題がありますか?

Gson gson = new GsonBuilder().setPrettyPrinting().create(); 

     String jsonStr = "[{'id':1, 'text':'firsttext'}," + 
       "{'id':2, 'text':'secondtext'}," + 
       "{'id':3, 'text':'thirdtext'}]"; 

     Type integerStringMap = new TypeToken<Collection<MyObject>>(){}.getType(); 
     Collection<MyObject> enums = gson.fromJson(jsonStr, integerStringMap); 

     for(MyObject mo : enums){ 
      System.out.println(mo); 
     } 
+0

私は十分に達成しようとしていることを説明したとは思わない。元の投稿を編集して、自分が何をしたいのかを示しました。 –

関連する問題