用Java存储JSON数据

时间:2014-05-30 13:48:19

标签: java json gson json-simple

我想用Eclipse学习Java中的JSON数据存储,所以我搜索了很多。

我找到了JSON.simpleGSON。这些都是不错的选择吗?

我去了Properties >> Java Build Path >> Add External JARs。我添加了json-simple-1.1.1.jargoogle-gson-2.2.4-release.zip。这样对吗? JavaDoc在哪里?

主要问题涉及此处的示例:JSON.simple example – Read and write JSON,它讲授JSON.simple。 我写了以下代码:

JSONObject object = new JSONObject();
JSONArray array = new JSONArray();
array.add("Joiner");
array.add("System");
object.put("nicknames", array);
object.put("from", "Italy");
object.put("age", 15);
try {
    String path = "";
    FileWriter file = new FileWriter(path);
    String json = object.toJSONString();
    file.write(json);
    file.close();
} catch (IOException io) {
    // Fail
}

但我收到以下警告。这些是什么意思?

  

类型安全:方法add(Object)属于原始类型ArrayList。对泛型类型ArrayList的引用应该在' JSONArray.add'

上进行参数化      

类型安全:方法put(Object,Object)属于原始类型HashMap。对泛型HashMap的引用应该在' JSONObject.put'

上进行参数化

另一方面,我如何美化我的JSON?

1 个答案:

答案 0 :(得分:1)

  

我找到了JSON.simpleGSON。这些都是不错的选择吗?

目前,我非常喜欢前者,但后者有更多功能,使用更广泛,并且始终是最新的。

  

JavaDoc在哪里?

对于JSON.simple,请参阅网站上的this answer。 对于GSON,请关注this link

  

我收到一些警告。他们是什么意思?

声明这些类的超类没有类型参数:

public class JSONObject extends HashMap {
    // ...
}

public class JSONArray extends ArrayList {
    // ...
}

当您致电put()add()时,它们会在超类中定义,而超类未正确参数化。

您可以做的是将@SuppressWarnings("unchecked")添加到容器中。

  

我如何美化我的JSON?

JSON.simple不能这样做,但GSON可以:

Gson gson = new GsonBuilder().setPrettyPrinting().create();