如何读取json文件,并使用GSON将其转换为POJO

时间:2022-09-19 21:35:25

I need to pass values from a json file to a java class,the json file is like this exemple:

我需要将值从json文件传递到java类,json文件就像这样的例子:

    {
        "id":1,
        "name":"Gold",
        "description":"Shiny!",
        "spriteId":1,
        "consumable":true,
        "effectsId":[1]
    },

i need to map,i did this:

我需要映射,我做了这个:

Items i = new Items();


Map<String, Items> mapaNomes = new HashMap<String, Items>();
mapaNomes.put("Gold",i);
mapaNomes.put("Apple",i );
mapaNomes.put("Clain Mail",i );

I'm new to android Development and I'm probably forgetting something because the following is not working,someone can help in find what`s is wrong?

我是Android开发的新手,我可能会忘记一些东西,因为以下不起作用,有人可以帮助找出问题所在?

BufferedReader in  = new BufferedReader(new InputStreamReader(System.in));

Gson gson = new Gson(); 
Items Items = gson.fromJson((BufferedReader) mapaNomes, Items.class);

1 个解决方案

#1


5  

1. Create your POJO representation for your Json.

public class MapaNomes() {
    String name;
    String description;
    // etc

    public String getName() {
        return name;
    }

    // create your other getters and setters
}

I find this tool is handy for transforming json to POJO. http://www.jsonschema2pojo.org/

我发现这个工具可以方便地将json转换为POJO。 http://www.jsonschema2pojo.org/

2. Read your file.json. Turn it into object

JsonReader reader = new JsonReader(new FileReader("file.json"));
MapaNomes mapaNomes = new Gson().fromJson(reader, MapaNomes.class);

Bonus

I'm thinking that there might be numerous json objects in your file.json such as:

我在想你的file.json中可能有很多json对象,例如:

{
    "id":1,
    "name":"Gold",
    "description":"Shiny!",
    "spriteId":1,
    "consumable":true,
    "effectsId":[1]
},
...
{
    "id":999,
    "name":"Silver",
    "description":"Whatever!",
    "spriteId":808,
    "consumable":true,
    "effectsId":[2]
},

If this is the case, then you can do the following:

如果是这种情况,那么您可以执行以下操作:

JsonReader reader = new JsonReader(new FileReader("file.json"));
List<MapaNomes> mapaNomeses = new Gson().fromJson(
                                reader, 
                                new TypeToken<List<Review>>() {}.getType());

Then you can do whatever you want with each and every one of them

for (MapaNomes mapaNomes : mapaNomeses) {
    // whatever
}

#1


5  

1. Create your POJO representation for your Json.

public class MapaNomes() {
    String name;
    String description;
    // etc

    public String getName() {
        return name;
    }

    // create your other getters and setters
}

I find this tool is handy for transforming json to POJO. http://www.jsonschema2pojo.org/

我发现这个工具可以方便地将json转换为POJO。 http://www.jsonschema2pojo.org/

2. Read your file.json. Turn it into object

JsonReader reader = new JsonReader(new FileReader("file.json"));
MapaNomes mapaNomes = new Gson().fromJson(reader, MapaNomes.class);

Bonus

I'm thinking that there might be numerous json objects in your file.json such as:

我在想你的file.json中可能有很多json对象,例如:

{
    "id":1,
    "name":"Gold",
    "description":"Shiny!",
    "spriteId":1,
    "consumable":true,
    "effectsId":[1]
},
...
{
    "id":999,
    "name":"Silver",
    "description":"Whatever!",
    "spriteId":808,
    "consumable":true,
    "effectsId":[2]
},

If this is the case, then you can do the following:

如果是这种情况,那么您可以执行以下操作:

JsonReader reader = new JsonReader(new FileReader("file.json"));
List<MapaNomes> mapaNomeses = new Gson().fromJson(
                                reader, 
                                new TypeToken<List<Review>>() {}.getType());

Then you can do whatever you want with each and every one of them

for (MapaNomes mapaNomes : mapaNomeses) {
    // whatever
}