Java GSON解析通用Json数组

Java GSON解析通用Json数组,java,json,gson,Java,Json,Gson,我的问题与此非常相似: 但我无法从中得到答案。 以上链接的答案是: public static List<MapData> getData(){ Gson gson = new Gson(); String jsonString = "[{\"id\":18,\"city\":\"test\",\"street\":\"test 1\",\"zipcode\":121209,\"state\":\"IL\",\"lat\":32.158138,\"lng\":34.

我的问题与此非常相似:

但我无法从中得到答案。 以上链接的答案是:

public static List<MapData> getData(){
    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}]";
    Type type = new TypeToken<List<MapData>>(){}.getType();
    return gson.fromJson(jsonString, type);     
}

有人能告诉我为什么我会犯这个错误吗?TypeToken类中不支持隐式运算符吗

我遇到了同样的问题。从:


此语法不能用于创建具有通配符参数的类型文字,例如
Class
List我遇到了相同的问题。从:

此语法不能用于创建具有通配符参数的类型文字,例如
Class
List您可以这样做:

     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;
Gson-Gson=new-Gson();
字符串jsonString=“[{\'id\'”:18,“城市:\'test\”,“街道:\'test 1\”,“zipcode\”:121209,\'state\:“IL\”,“lat\”:32.158138,\'lng\:34.807838},{\'id\:19,\'city\”:“test\”,\'street\:“1\”,“zipcode\:76812,\'state\:“IL\”,“lat\”:34.807838},{\'id\”,“街道:“:“test\”,'81034.41034,\';
列出tmpList=gson.fromJson(jsonString);
List resultList=newarraylist(tmplist.size());
用于(地图:tmpList){
字符串tmpJson=gson.toJson(map);
add(gson.fromJson(tmpJson,classT));
}
返回结果列表;
您可以这样做:

     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;
Gson-Gson=new-Gson();
字符串jsonString=“[{\'id\'”:18,“城市:\'test\”,“街道:\'test 1\”,“zipcode\”:121209,\'state\:“IL\”,“lat\”:32.158138,\'lng\:34.807838},{\'id\:19,\'city\”:“test\”,\'street\:“1\”,“zipcode\:76812,\'state\:“IL\”,“lat\”:34.807838},{\'id\”,“街道:“:“test\”,'81034.41034,\';
列出tmpList=gson.fromJson(jsonString);
List resultList=newarraylist(tmplist.size());
用于(地图:tmpList){
字符串tmpJson=gson.toJson(map);
add(gson.fromJson(tmpJson,classT));
}
返回结果列表;

您可以使用此方法解析要映射的通用json字符串

    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;
}
公共映射getMapFromJson(字符串jsonString){ Map Map=newhashmap(); 试一试{ JSONObject对象=新的JSONObject(jsonString); 迭代器迭代器=object.keys(); while(iterator.hasNext()){ 字符串键=(字符串)迭代器。下一步(); 如果(!key.isEmpty()&&!object.getString(key.isEmpty()){ map.put(key,object.getString(key)); } } }捕获(JSONException e){ e、 printStackTrace(); } 返回图; }
您可以使用此方法解析要映射的通用json字符串

    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;
}
公共映射getMapFromJson(字符串jsonString){ Map Map=newhashmap(); 试一试{ JSONObject对象=新的JSONObject(jsonString); 迭代器迭代器=object.keys(); while(iterator.hasNext()){ 字符串键=(字符串)迭代器。下一步(); 如果(!key.isEmpty()&&!object.getString(key.isEmpty()){ map.put(key,object.getString(key)); } } }捕获(JSONException e){ e、 printStackTrace(); } 返回图; }
我认为这是一种黑客行为,这样的代码不应该在生产环境中使用。通过应用此过程,将创建一个新集合,并将项目转移到新结构中。我认为这是一种黑客行为,这样的代码不应在生产环境中使用。通过应用此过程,将创建一个新集合,并将项目转移到新结构中。
    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;
}