Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson从JSON到HashMap<;整数,MyObject>;其中整数位于JSON对象内部_Java_Json_Parsing_Hashmap_Gson - Fatal编程技术网

Java Gson从JSON到HashMap<;整数,MyObject>;其中整数位于JSON对象内部

Java Gson从JSON到HashMap<;整数,MyObject>;其中整数位于JSON对象内部,java,json,parsing,hashmap,gson,Java,Json,Parsing,Hashmap,Gson,我有一个JSON字符串,我正试图将其解析为HashMap 我的对象如下所示: public class MyObject { private int id; private String text; } objects:[ {"id":1, "text":"firsttext"}, {"id":2, "text":"secondtext"}, {"id":3, "text":"thirdtext"} ] JSON字符串如下所示: public class MyObject { priva

我有一个JSON字符串,我正试图将其解析为HashMap

我的对象如下所示:

public class MyObject {

private int id;
private String text;
}
objects:[
{"id":1, "text":"firsttext"},
{"id":2, "text":"secondtext"},
{"id":3, "text":"thirdtext"}
]
JSON字符串如下所示:

public class MyObject {

private int id;
private String text;
}
objects:[
{"id":1, "text":"firsttext"},
{"id":2, "text":"secondtext"},
{"id":3, "text":"thirdtext"}
]
我如何将其巧妙地解析为一个HashMap,以便调用HashMap.get(2)包含“secondtext”的数组的第二个对象将返回

现在我正在做的是

Type integerStringMap = new TypeToken<Map<Integer, MyObject>>(){}.getType();
HashMap<Integer, MyObject> objects = new Gson().fromJson(content, integerStringMap);
Type integerStringMap=new-TypeToken(){}.getType();
HashMap 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);
}
Type integerObjectList=new-TypeToken(){}.getType();
List cardList=new Gson().fromJson(jsonString,integerObjectList);
HashMap cardMap=新的HashMap();
对于(MyObject o:objectList){
put(o.getId(),o);
}

如果可能的话,我想在没有for循环的情况下完成它。

下面的代码对我很有用。也许你是如何创建“内容”的

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);
        }
Gson Gson=new GsonBuilder().setPrettyPrinting().create();
字符串jsonStr=“[{'id':1,'text':'firsttext'},”+
{'id':2,'text':'secondtext'}+
“{'id':3,'text':'thirdtext'}]”;
类型integerStringMap=newtypetoken(){}.getType();
集合枚举=gson.fromJson(jsonStr,integerStringMap);
对于(MyObject mo:枚举){
系统输出打印项次(mo);
}

以下代码对我很有用。也许你是如何创建“内容”的

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);
        }
Gson Gson=new GsonBuilder().setPrettyPrinting().create();
字符串jsonStr=“[{'id':1,'text':'firsttext'},”+
{'id':2,'text':'secondtext'}+
“{'id':3,'text':'thirdtext'}]”;
类型integerStringMap=newtypetoken(){}.getType();
集合枚举=gson.fromJson(jsonStr,integerStringMap);
对于(MyObject mo:枚举){
系统输出打印项次(mo);
}

看一看。看一看。我想我没有很好地解释我想要实现的目标。我编辑了我的原创文章来展示我想做什么。我想我没有充分解释我想要达到的目标。我编辑了我的原始帖子,以显示我想做什么。