【问题标题】:How read json file, and convert it to POJO using GSON如何读取 json 文件,并使用 GSON 将其转换为 POJO
【发布时间】:2015-10-23 01:21:09
【问题描述】:

我需要将json文件中的值传递给java类,json文件是这样的例子:

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

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

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 );

我是 android Development 的新手,我可能忘记了一些事情,因为以下内容不起作用,有人可以帮助找出问题所在?

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

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

【问题讨论】:

  • 你为什么要将Map 转换为与json 无关的BufferedReader
  • DataObject obj = gson.fromJson(br, DataObject.class); 首先将您的 json 响应转换为 DataObject,然后对其进行映射。这里brBufferedReader 对象

标签: java android json gson


【解决方案1】:

1。为您的 Json 创建 POJO 表示。

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

    public String getName() {
        return name;
    }

    // create your other getters and setters
}

我发现这个工具对于将 json 转换为 POJO 很方便。 http://www.jsonschema2pojo.org/

2。阅读你的 file.json。把它变成对象

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

奖金

我认为您的 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]
},

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

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
}

【讨论】:

    猜你喜欢
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多