GSON parse generic Json Array

后端 未结 3 1047
暖寄归人
暖寄归人 2020-12-21 23:18

My question is very similiar to this: Unable to parse Json array using Gson

But I cann\'t get the answer from it. The answer from above link:

public         


        
相关标签:
3条回答
  • 2020-12-21 23:44

    I met the same problem. From the Javadoc of TypeToken:

    This syntax cannot be used to create type literals that have wildcard parameters, such as Class<?> or List<? extends CharSequence>.

    You must explicitly indicate the type of T in TypeToken<T>, without generics.

    0 讨论(0)
  • 2020-12-21 23:54

    You can use this method in order to parse generic json string to map

        public Map<String, String> getMapFromJson(String jsonString) {
        Map<String, String> map = new HashMap<>();
        try {
            JSONObject object = new JSONObject(jsonString);
            Iterator<?> iterator = object.keys();
            while (iterator.hasNext()) {
                String key = (String) iterator.next();
                if(!key.isEmpty() && !object.getString(key).isEmpty()){
                    map.put(key, object.getString(key));
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return map;
    }
    
    0 讨论(0)
  • 2020-12-22 00:00

    you can do like this:

         Gson gson = new Gson();
    
        String jsonString = "[{\"id\":18,\"city\":\"test\",\"street\":\"test 1\",\"zipcode\":121209,\"state\":\"IL\",\"lat\":32.158138,\"lng\":34.807838},{\"id\":19,\"city\":\"test\",\"street\":\"1\",\"zipcode\":76812,\"state\":\"IL\",\"lat\":32.161041,\"lng\":34.810410}]";
    
        List<Map> tmpList = gson.fromJson(jsonString);
        List<T> resultList = new Arraylist<T>(tmplist.size());
        for(Map map:tmpList){
           String tmpJson = gson.toJson(map);
           resultList.add(gson.fromJson(tmpJson, classT));
        }
        return resultList;
    
    0 讨论(0)
提交回复
热议问题