2016-10-24 6 views
-2
private void loadFromAndToPlaceValues() { 


     String str = loadJSONFromAsset(); 
     this.places = (List)new Gson().fromJson(str, newTypeToken<List<BusEntity>>().getType()); 
     if (this.places != null && this.places.size() > 0) { 
      this.places_array = new String[this.places.size()]; 
      for (int i = 0; i < this.places_array.length; i++) { 
       this.places_array[i] = ((BusEntity) this.places.get(i)).getValue(); 
      } 
     } 
    } 
+0

ログインを追加してください。また、適切な説明。 –

答えて

1

あなたは括弧{}が欠けています。次のように変更します。

this.places = (List)new Gson().fromJson(str, new TypeToken<List<BusEntity>>(){}.getType()); 

別の注意点として、質問はより建設的で説明的でなければなりません。プレーンコードを投稿すると、ほとんどの場合、良い答えが得られない可能性があります。

0

それはあなたを助けるかもしれない:

オプション1 - java.lang.reflect.ParameterizedTypeを自分で実装し、Gsonに渡します。

private static class ListParameterizedType implements ParameterizedType { 

    private Type type; 

    private ListParameterizedType(Type type) { 
     this.type = type; 
    } 

    @Override 
    public Type[] getActualTypeArguments() { 
     return new Type[] {type}; 
    } 

    @Override 
    public Type getRawType() { 
     return ArrayList.class; 
    } 

    @Override 
    public Type getOwnerType() { 
     return null; 
    } 

    // implement equals method too! (as per javadoc) 
} 

そして、単に:

Type type = new ListParameterizedType(clazz); 
List<T> list = gson.fromJson(json, type); 

これは、少なくともGson 2.2.4で、あまりにも動作します。

Type type = com.google.gson.internal.$Gson$Types.newParameterizedTypeWithOwner(null, ArrayList.class, clazz); 
関連する問題