从字符串中获取JSONobjects

时间:2014-07-13 19:28:25

标签: java json

所以我有一个包含多个JSONobjects的字符串,如下所示:

  

[{"一个":" 1"" 2":" 2""三&#34 ;: " 3"},    {"一个":" 4"" 2":" 5""三":" 6"},    {"一个":" 7"" 2":" 8""三":" 9"}]

如何使用java迭代此字符串并获取每个对象?是否可以使用JSON api,或者我应该自己制作解析器?

3 个答案:

答案 0 :(得分:2)

GSON library是将java对象转换为json字符串的好选择,反之亦然。

在你的情况下,它是一个对象列表。

示例代码:

class MyPOJO {
    private String one;
    private String two;
    private String three;
    // getter & setter
}

String jsonString = "[{\"one\":\"1\",\"two\":\"2\",\"three\":\"3\"}, {\"one\":\"4\",\"two\":\"5\",\"three\":\"6\"}, {\"one\":\"7\",\"two\":\"8\",\"three\":\"9\"}]";
Type type = new TypeToken<ArrayList<MyPOJO>>() {}.getType();
ArrayList<MyPOJO> obj = new Gson().fromJson(jsonString, type);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(obj));

注意: java POJO类中变量的名称应与JSON字符串相同。

Find more examples...

答案 1 :(得分:1)

你应该挑衅地使用Json API,你可以从here下载jar并简单地使用

JSONArray myArray = new JSONArray(yourString);
for (int i=0; i < myArray.length(); i++)
{
    JSONObject currentOb = myArray.get(i);
    doSomthing(currentOb);
}

答案 2 :(得分:0)

很明显,您应该使用JSON库。现有的库经过测试和验证。在非常罕见的情况下,您可能需要编写自己的解析器,您自己的实现。如果是这种情况,我认为您应该仔细检查您的设计。因为如果现有库与您的设计相冲突,您可能会做错事。

库选择取决于您的环境和性能要求。 在我的例子中,Spring3是环境,JSON对象是巨大的(10-20MB),并且插入发生在现有的JSON对象上。我们更喜欢Jackson。杰克逊的表现非常出色。独立的绩效比较在here。你会看到杰克逊在here中胜过GSon。