如何在java中读取json字符串?

时间:2016-03-01 12:15:07

标签: java json

这是我的json-string:

[
    {
        "id": 1,
        "ip": "192.168.0.22",
        "folderName": "gpio1_pg3"
    },
    {
        "id": 2,
        "ip": "192.168.0.22",
        "folderName": "gpio2_pb16"
    }
]

我想迭代数组,因为我将为每个数组成员创建一个特殊对象。

这是我从http url获取json字符串的方式。

BufferedReader bufferedReader = 
         new BufferedReader(new InputStreamReader(inputStreams, Charset.forName("UTF-8")));

String jsonText = readAll(bufferedReader);

你能举个例子说明我如何获得所有json元素的数组。 一个数组元素必须包含id,ip和folderName。

2 个答案:

答案 0 :(得分:4)

JacksonGSON是用于将JSON字符串转换为对象或地图的常用库。

杰克逊的例子:

String json = "[{\"foo\": \"bar\"},{\"foo\": \"biz\"}]";
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(json);
// advance stream to START_ARRAY first:
jp.nextToken();
// and then each time, advance to opening START_OBJECT
while (jp.nextToken() == JsonToken.START_OBJECT)) {
    Foo foobar = mapper.readValue(jp, Foo.class);
    // process
    // after binding, stream points to closing END_OBJECT
}

public class Foo {
    public String foo;
}

答案 1 :(得分:1)

尝试,

JSONArray array = new JSONArray(jsonStr); 

for(int i=0; i<array.length(); i++){
    JSONObject jsonObj = array.getJSONObject(i);
    System.out.println(jsonObj.getString("id"));
    System.out.println(jsonObj.getString("ip"));
    System.out.println(jsonObj.getString("folderName"));
}

或者您可以尝试使用Google的JSON库(google-gson)

JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(your json string);