使用文件中的json数据填充哈希图

用户名

我想在我的java程序中表示此文件

我想做的是通过“键”值快速搜索它,例如,给定P26我想要返回的值spouse

我以为我可以这样:

BufferedReader reader = new BufferedReader(new FileReader(new File("properties-es.json")));
        Map<String, HashMap<String, Object>> map = 
        new Gson().fromJson(reader, new TypeToken<HashMap<String, HashMap<String, Object>>>() {}.getType());

这是根据键名获取值

String value = (String) map.get("properties").get("P6");
System.out.println(value);

但是实际上,当我运行第一行时,我得到了错误:

  Expected BEGIN_ARRAY but was STRING at line 1347 column 10

我为简化数据结构而修改的文件的一部分看起来像这样:(^是个坏主意吗?正如我所描述的那样,原始文件是否适合在哈希图中表示?)

    "P1655": "station number",
    "P1656": "unveiled by",
    "P1657": "MPAA film rating",
    "P1658": "number of faces"

}

我这样做是因为它们的原始文件似乎将是一个更复杂的数据结构。就像我之前说的,我想做的就是启用通过这些“ P值”进行查询的功能

我的想法是将P值作为键并将单词作为值的哈希图是实现此目的的最佳方法,但是我该如何做到这一点呢?

到目前为止,我一直在使用gson。

丹尼尔·斯佩里(Daniel Sperry)

您的TypeToken与文件内容的结构不匹配,特别是与该数组不匹配(“缺失”)。

您可以创建一个与文件具有相同字段的数据类,或者保持简单,然后执行以下操作:

BufferedReader reader = new BufferedReader(new FileReader(new File("properties-es.json")));
        Map<String, Map<String, Object>> map = 
        new Gson().fromJson(reader, HashMap.class);

您会收到一个编译器警告,可以将其取消,但它应该可以正常工作。

使用数据类:

// if inner class add "static"
public class Data {
    public Map<String,String> properties;
    public List<String> missing;
}

//...
Data data = new Gson().fromJson(reader, Data.class); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章